node.js - 如何在 bash 参数中保留引号?

标签 node.js bash shell

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

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

node mynodeapp events:"Open project"

尽管“Open”和“project”之间有空格,哪个 Node 作为一个参数解析没有问题。

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

最佳答案

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

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

关于node.js - 如何在 bash 参数中保留引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570384/

相关文章:

node.js - 跨水平服务器计算 socket.io 用户

linux - 解析日志文件的shell脚本

bash - 为什么 `cat` 在这里列出文件而不是文件内容?

javascript - FindOne() 可以返回记录,但无法使用 Node.js 的 MongoDB 聚合查询(id 的总记录)

javascript - 为什么我的 Node.js 得到 "program terminated"而没有错误

javascript - 将字符串新日期更改为最新

linux - 替换 key :value from one file in another file in shellscript?

linux - 在两个逗号之间抓取数据

bash - 在 for/while 循环中使用 awk 命令

android - ADB shell 命令在一行/bash 脚本上?