以下脚本不起作用:
set -x
cd "${HOME}/${PROJECT}"
echo "create specified jars list"
cat /dev/null > jar-versions
for config in $(ls *.clj); do
echo $config
<some pile of java>
done
它出错了以下内容:
+ cd /home/pat/
+ echo 'create specified jars list'
create specified jars list
+ cat /dev/null
++ ls '*.clj'
ls: cannot access *.clj: No such file or directory
错误似乎是for循环中的ls有一些时髦的引用。我不知道为什么会这样。以下代码按预期工作:
set -x
#cd "${HOME}/${PROJECT}"
echo "create specified jars list"
cat /dev/null > jar-versions
for config in $(ls *.clj); do
echo $config
<some pile of java>
done
唯一的区别是我已经注释掉了cd调用。我有一个解决方法,但我对于为什么cd的执行与通配符的引用相混淆而感到沮丧。
我正在使用ubuntu 14.02和bash GNU bash,版本4.3.11(1)-release
根据要求编辑我已经解释了&#39; cat / dev / null&#39;来自(好赶上@ 123),下面是&#39; set -x&#39;的输出。工作脚本。
+ echo 'create specified jars list'
create specified jars list
+ cat /dev/null
++ ls config.clj tinyconfig.clj
+ for config in '$(ls *.clj)'
+ echo config.clj
config.clj
+ for config in '$(ls *.clj)'
+ echo tinyconfig.clj
tinyconfig.clj
答案 0 :(得分:1)
无法注意到我的本地环境中未设置env var。设置env var时有效。