Bash:由“文本在找到匹配引用之前结束”引起的“无法解析参数”[重复]
Posted
技术标签:
【中文标题】Bash:由“文本在找到匹配引用之前结束”引起的“无法解析参数”[重复]【英文标题】:Bash: "Failed to parse arguments" caused by "Text ended before matching quote was found" [duplicate] 【发布时间】:2019-06-26 18:24:10 【问题描述】:目标:
运行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
应该使用参数run start
运行程序npm
。但由于我不了解 Bash,我无法解决这个问题。
感谢您的任何建议!
【问题讨论】:
这是mywiki.wooledge.org/BashFAQ/050的必填链接 【参考方案1】:shell 解释器总是使用引号来检测和保护单词。它们永远不会包含在结果中
因此使用数组:
HEAD=( gnome-terminal -e "npm run start --prefix \
/home/cc/Desktop/Programming/Software/Elastic/elasticsearch-head" )
"$HEAD[@]"
【讨论】:
有效,谢谢。数组末尾缺少括号。无法编辑您的回复,因为编辑因太短而被阻止。 添加了右括号!以上是关于Bash:由“文本在找到匹配引用之前结束”引起的“无法解析参数”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
AppCertDlls:由病毒引起的 Win32 上的进程创建速度减慢
如何区分两个“onpause”事件 - 由单击“暂停”按钮引起,以及由到达媒体片段末尾引起?