根据Bash手册3.7.1节的规定,命令行开头的变量赋值应该对被调用的程序可见。Cygwin Bash中的命令行变量赋值不工作?
例如
DIR=/tmp ls $DIR
应该表现得好像我输入了“ls/tmp” - 并且变量DIR在执行命令后不应该保留。 Cygwin Bash(GNU bash,版本3.2.51(24)-release(i686-pc-cygwin))似乎没有这样做 - 上述命令的行为就像没有定义$ DIR一样。这可以通过其他测试例如“DIR =/tmp echo $ DIR”,“DIR =/tmp set”等来确认。
请注意,添加分号工作(“DIR =/tmp; ls $ DIR”),但保留命令后定义的变量。
为什么这不像预期的那样工作?
啊,这就是为什么在给xargs一个大bash命令时需要分号。 – mkb 2010-09-27 14:39:28
当然,我已经输入了9个额外的字符 - 来创建示例。 – Jeremy 2010-09-27 14:43:20
但是你是正确的 - 变量将在命令行的其余部分被扩展后设置。 – Jeremy 2010-09-27 14:44:48