如何在bash参数中保留引号?

时间:2014-03-21 22:07:26

标签: node.js bash shell

我有一个bash脚本(Mac OS X),它依次调用Node.js命令行应用程序。

我通常会像这样调用Node.js应用程序:

node mynodeapp events:"Open project"

尽管在" Open"之间存在空间,但哪个节点作为一个参数进行解析没有问题。和"项目"。

我像这样调用我的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\"',但没有区别。

2 个答案:

答案 0 :(得分:3)

您还需要在调用时使用引号:

node mixpanel-extract date:"$1" events:"$EVENTSQUOTES"

答案 1 :(得分:3)

echo node mixpanel-extract "date:$1" "events:$2"
node mixpanel-extract "date:$1" "events:$2"

您在使用变量时也需要引用变量,否则会发生分词。