目标:
运行gnome-terminal -e "npm run start --prefix /home/cc/Desktop/Programming/Software/Elastic/elasticsearch-head"
代码:
HEAD="gnome-terminal -e \"npm run start --prefix /home/cc/Desktop/Programming/Software/Elastic/elasticsearch-head\""
${HEAD}
错误:
无法解析参数:“ --command / -e”的参数无效:在找到匹配的引号之前,文本结束。(文本为'“ npm”)
其他信息:
当我尝试使用时
ES="gnome-terminal -e \"/home/cc/Desktop/Programming/Software/Elastic/pna/bin/elasticsearch\""
${ES}
然后它可以正常工作。区别在于[...]/bin/elasticsearch
本身就是一个shell脚本,而npm run start
应该运行带有参数npm
的程序run start
。但是,由于我不了解Bash,我无法解决这个问题。
谢谢您的建议!
答案 0 :(得分:2)
shell解释器总是使用报价来检测和保护单词。它们永远不会被包含在结果中
因此使用数组:
HEAD=( gnome-terminal -e "npm run start --prefix \
/home/cc/Desktop/Programming/Software/Elastic/elasticsearch-head" )
"${HEAD[@]}"