【发布时间】:2014-03-21 22:07:26
【问题描述】:
我有一个 bash 脚本 (Mac OS X),它依次调用 Node.js 命令行应用程序。
我通常这样调用 Node.js 应用程序:
node mynodeapp events:"Open project"
尽管“Open”和“project”之间有空格,但哪个节点作为一个参数解析没有问题。
我这样调用我的 bash 脚本:
. mybashscript.sh 2014-03-20 "Open project"
在我拥有的 bash 脚本中:
EVENTSQUOTES=\"$2\"
echo node mixpanel-extract date:$1 events:$EVENTSQUOTES
node mixpanel-extract date:$1 events:$EVENTSQUOTES
运行脚本会产生:
node mixpanel-extract date:2014-03-20 events:"Open project"
Parameters: { date: '2014-03-20',
events: [ '"Open' ] }
虽然echo 输出行看起来不错,但我的Node.js 应用程序的Parameters: 输出告诉我bash 将参数一分为二。我也试过用更多的引号括起来,例如EVENTSQUOTES='\"$2\"' 但没什么区别。
【问题讨论】:
-
@anubhava 对您的问题有准确的答案。请允许我补充一点:只有 syntactic 引号对解析有任何影响。您转义的任何引号都是数据,而不是语法(并且任何扩展结果都是 always 数据,而不是语法),因此在引号内添加引号会更改您的数据,而不是告诉解析器解释什么它看起来不同。