评估 bat --line-range 参数的表达式

问题描述 投票:0回答:1

我正在尝试使用以下语法的 fzf:

fzf \
    --ansi \
    --delimiter : \
    --bind "f12:execute-silent:(code -g $PWD/{1..3})" \
    --preview-window 'right:50%' \
    --preview 'batcat --highlight-line={2} --line-range=$(({2}-10)):$(({2}+10)) --color=always {1}' | cut -d":" -f1,2,3

我想用batcat预览,但仅限于行:

--line-range=$(({2}-10)):$(({2}+10))

但是我在bat中遇到错误:“错误的数学表达式:非法字符:'

将 cut 命令中的 {2} 参数从“'”字符中剥离,以便可以评估行范围的正确方法是什么?

谢谢

linux bash batch-file fzf
1个回答
0
投票

最好使用

tr
命令删除单引号!

fzf \
    --ansi \
    --delimiter : \
    --bind "f12:execute-silent:(code -g $PWD/{1..3})" \
    --preview-window 'right:50%' \
    --preview 'batcat --highlight-line={2} --line-range=$(($(echo {2} | tr -d "'")-10)):$(($(echo {2} | tr -d "'")+10)) --color=always {1}' | cut -d":" -f1,2,3
© www.soinside.com 2019 - 2024. All rights reserved.