在嘗試調試作業提交腳本,我結束了該bug縮小到這一點:Bash陣列功能或錯誤?
[[email protected] ~]$ var=(1 foo1*bar4 echo 1*4=4)
[[email protected] ~]$ echo "${var[@]}"
1 foo1*bar4 echo 1*4=4
[[email protected] ~]$ cd /data/testuser/jobs/example/a16162/
[[email protected] a16162]$ var=(1 foo1*bar4 echo 1*4=4)
[[email protected] a16162]$ echo "${var[@]}"
1 foo1-bar4 foo1*bar4 echo 1*4=4
[[email protected] a16162]$
這是一個新的bash會話的完整無缺的成績單。任何人都有任何想法如何工作?這是我之前從未聽說過的bash的一些古老特徵,還是僅僅是一個非常奇怪的錯誤?
版本(是的,我知道這是過時):
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」,這就是爲什麼使用這個數組似乎更好。
您可以禁用文件名以
set -f
和通配符重新啓用它!!!!我爲什麼沒有想到這一點;我知道它必須依賴於文件夾,但不知怎的,它錯過了。 Thankyou多。我不認爲我可以引用'var =($ l)',所以我想我只是使用'cut'。 – zebediah49@ zebediah49當然你可以引用'var =(「$ l」)'......除非你真正想要的是字符串拆分而不是glob-expand'$ l'?這也是可能的,但在告訴你如何去做之前,你需要告訴我們你想要什麼。 –
我隱約觸摸它,但我想分割字符串,沒有任何其他事情發生。具體來說,我需要'$ {var [0]}','$ {var [1]}和$ {var [@]:2}'。 'awk'會做到這一點,只是有些笨拙。 – zebediah49