使用[email protected]
变量在双引号:
#!/bin/bash
node server.js "[email protected]"
这将提供命令行上传递的所有参数和保护可能出现在他们的空间。如果你不使用引号,像"foo bar"
这样的参数(也就是说,其中一个字符串值有一个空格的参数)传递给你的脚本将作为两个参数传递给node
。从documentation:
当扩展发生在双引号内时,每个参数将扩展为单独的单词。也就是说,“$ @”相当于“$ 1”“$ 2”...。
鉴于另一个答案,编辑补充说:我不明白你为什么要使用$*
。执行以下脚本:
#!/bin/bash
echo "Quoted:"
for arg in "$*"; do
echo $arg
done
echo "Unquoted:"
for arg in $*; do
echo $arg
done
有了,下面的(假设你的文件保存为script
和可执行):
$ script "a b" c
您将获得:
Quoted:
a b c
Unquoted:
a
b
c
您的用户意思是传递两个参数:a b
和c
。 “Quoted”情况将其处理为一个参数:a b c
。 “未加引号”的情况将其处理为3个参数:a
,b
和c
。你会有不愉快的用户。
我提到'$ *'因为它经常被庆典初学者,而不是'$ @'。 –
*鉴于其他答案*部分是有点混淆(不是答案的真正部分),但自从你来之前我会把这个给你。谢谢。 – MightyPork