Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash数组特性还是Bug?_Bash - Fatal编程技术网

Bash数组特性还是Bug?

Bash数组特性还是Bug?,bash,Bash,在尝试调试作业提交脚本时,我最终将错误范围缩小为: [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

在尝试调试作业提交脚本时,我最终将错误范围缩小为:

    [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

版本(是的,我知道它过时了):


编辑:这是为了处理用户传递的数组,我宁愿使用这种方法,也不愿使用三组相当笨拙的
awk
hack。它们是“提取元素2”之类的东西,这就是为什么使用数组看起来更好的原因。

当数组形成时,全局仍然是全局的。如果你不想这样,那么你需要引用或逃避它们

$ var=( 1 "foo1*bar4" echo "1*4=4" )

当阵列形成时,全局仍然是全局的。如果你不想这样,那么你需要引用或逃避它们

$ var=( 1 "foo1*bar4" echo "1*4=4" )

ls/data/testuser/jobs/example/a16162/foo1*
揭示了什么


您可以使用
set-f
禁用文件名全局搜索,并使用
set+f

重新启用文件名全局搜索
ls/data/testuser/jobs/example/a16162/foo1*
显示了什么


您可以使用
set-f
禁用文件名全局绑定,并使用
set+f

重新启用它!!!!为什么我没有想到这一点;我知道它必须依赖于文件夹,但不知怎么的,我忽略了这一点。多谢各位。我想我不能引用
var=($l)
,所以我想我会用
cut
@zebediah49当然你可以引用
var=(“$l”)
。。。除非您真正想要的是字符串拆分而不是全局展开
$l
?这也是可能的,但是你需要先告诉我们你想要什么,然后我们才能告诉你怎么做。我模糊地触摸了它,但我想在没有其他任何事情发生的情况下分开绳子。具体来说,我需要
${var[0]}
${var[1]}
${var[@]:2}
<代码>awk会这样做,只是有点笨拙。!!!!为什么我没有想到这一点;我知道它必须依赖于文件夹,但不知怎么的,我忽略了这一点。多谢各位。我想我不能引用
var=($l)
,所以我想我会用
cut
@zebediah49当然你可以引用
var=(“$l”)
。。。除非您真正想要的是字符串拆分而不是全局展开
$l
?这也是可能的,但是你需要先告诉我们你想要什么,然后我们才能告诉你怎么做。我模糊地触摸了它,但我想在没有其他任何事情发生的情况下分开绳子。具体来说,我需要
${var[0]}
${var[1]}
${var[@]:2}
awk
会这样做,只是有点笨拙。