我正在尝试为一个自定义的rofi菜单写一个bash脚本。这个菜单对于不同的自定义命令会有不同的选择。目前,我正在尝试看看我是否可以写一个bash脚本来执行一个命令。这个命令是:
exec /home/user/.config/i3/myscript.sh 'todolist' 'xfce4-terminal --command "emacs -nw -Q -l ~/.emacs.d/script.el ~/Dropbox/mytodo.org" '
这是一个非常长的命令,因此我将其分解如下:
COMMAND=("/home/user/.config/i3/myscript.sh")
EMACS=(" 'todolist' 'xfce4-terminal --command "emacs -nw -Q -l ~/.emacs.d/script.el ~/Dropbox/mytodo.org"' ")
我试着附和道:echo $COMMAND $EMACS
我得到的结果是:
/home/user/.config/i3/script.sh 'todolist' 'xfce4-terminal --command emacs
因此,从-nw -Q -l
开始的所有命令都被忽略了。因此,这是一个不完整的命令。有人能帮我修正第二个变量EMACS吗?
1条答案
按热度按时间4xrmg8kj1#
Bash中变量赋值中的括号用于创建数组。数组项之间用空格分隔。下面是一个示例:
所以在你的例子中:
表达式
${EMACS[0]}
将包含'todolist' 'xfce4-terminal --command emacs
,表达式${EMACS[1]}
将具有值-nw
,依此类推。另外,请注意
" 'todolist' etc. "emacs
只是字符串" 'todolist' etc. "
和emacs
的并置,因此结果将是不带引号的所有字符的连接。我的建议是你使用变量来表示文件,其余的用普通的bash来表示。如果你觉得一行太长,可以用反斜杠把命令分成多行: