【发布时间】:2012-03-03 01:05:45
【问题描述】:
我的同事 Ryan 向我提出了他的 Bash 脚本中的一个错误,我发现了这个测试的问题:
$ mkdir ryan
$ mkdir ryan/smells-bad
$ FOO=ryan/smells-*
$ echo $FOO
ryan/smells-bad
$ touch $FOO/rotten_eggs
touch: cannot touch `ryan/smells-*/rotten_eggs': No such file or directory
由此我推断,通配是在 echo 命令期间发生的,而不是在创建变量 FOO 时发生的。
我们有几个变通方法,按不优雅的降序排列:
touch `echo $FOO`/rotten_eggs
或者:
pushd
cd $FOO
touch rotten_eggs
popd
但两者都不令人满意。我错过了一个技巧吗?
【问题讨论】: