从cygwin提示符运行shell脚本中的参数位置之间的差异

时间:2015-11-15 12:35:32

标签: cygwin sh

我一直在通过cygwin终端运行shell脚本。

我无法弄清楚之间有什么区别:

sh script1.sh argument="john" 

 argument="john" sh script.sh

1 个答案:

答案 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形式的参数赋值来临时扩充。这些赋值语句仅影响该命令所见的环境。