在尝试调试作业提交脚本时,我最终将错误缩小到这个:
[testuser@bes ~]$ var=( 1 foo1*bar4 echo 1*4=4 )
[testuser@bes ~]$ echo "${var[@]}"
1 foo1*bar4 echo 1*4=4
[testuser@bes ~]$ cd /data/testuser/jobs/example/a16162/
[testuser@bes a16162]$ var=( 1 foo1*bar4 echo 1*4=4 )
[testuser@bes a16162]$ echo "${var[@]}"
1 foo1-bar4 foo1*bar4 echo 1*4=4
[testuser@bes a16162]$
这是一个新的bash会话的未切割成绩单。任何人都知道那个有用吗?这是我之前从未听说过的bash的一些古老特征,还是一个非常怪异的bug?
版本(是的,我知道它已经过时了):
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Linux bes 2.6.18-194.11.3.el5 #1 SMP Mon Aug 30 16:19:16 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
编辑:这是针对需要处理用户传递的数组的东西,我宁愿使用这种方法,而不是使用相当笨拙的awk
黑客。他们琐碎地提取元素2"各种各样的东西,这就是为什么使用数组似乎更好。
答案 0 :(得分:2)
当阵列形成时,Globs仍然是全局的。如果你不想要这个,那么你需要引用或逃避它们。
$ var=( 1 "foo1*bar4" echo "1*4=4" )
答案 1 :(得分:1)
ls /data/testuser/jobs/example/a16162/foo1*
揭示了什么?
您可以使用set -f
禁用文件名通配,并使用set +f