我一直在通过cygwin终端运行shell脚本。
我无法弄清楚之间有什么区别:
sh script1.sh argument="john"
argument="john" sh script.sh
答案 0 :(得分:0)
默认情况下,CygWin使用bash
shell,因此这是一个bash
问题。您可以使用以下script1.sh
:
echo "env[argument] = '$argument'"
echo "parameter = '$1'"
并检查以下成绩单:
pax > sh script1.sh argument="john"
env[argument] = ''
parameter = 'argument=john'
pax> argument="john" sh script1.sh
env[argument] = 'john'
parameter = ''
第一个变体只是将字符串(反引号)作为参数传递给脚本。
第二个在脚本持续时间内设置一个环境变量,然后使用 no 参数运行它。 bash
文档(稍微解释)中涵盖了这一特殊情况:
任何简单命令或函数的环境都可以通过在其前面加上
name=value
形式的参数赋值来临时扩充。这些赋值语句仅影响该命令所见的环境。