數組我想嘗試在bash這種方法讀取一個變量的值,似乎沒有簡單的方法來做到這一點。我在搞什麼的例子:從您的變量名
Var1=foo
Var2=bar
Var3=
var3是故意留在我的測試未定義與此。
這些變量後,我用的東西最好是這樣的:
declare -a array=(Var1 Var2 Var3)
for array_element in ${array[@]};
do
if [[ $array_element ]];
then
echo "Element $array_element has content - true";
echo "The value of $array_element is foo."
echo
else
echo "Element $array_element has no content - false";
echo
fi
done
所需的最終結果後,我,看看我能做到這一點是,如果你有3個或30個可能的變量,它會告訴你數組元素是否有內容,然後輸出該特定的變量內容。在這種情況下,「foo」和「bar」。
- 定義一個變量
- 定義包括該變量只
- 檢查的名稱的數組,看是否定義數組內容(如果沒有它的設置 - 只要是空白或不)
- 然後輸出實際的數組元素的最初定義的值。
動態數組,排序的?一個基本的一堆
if [[ $Var1 ]]
if [[ $Var2 ]]
if [[ $Var3 ]]
工作正常,但我想把它包裝到這樣的事情,如果我可以有更少的代碼重複。長期目標將是有變量中讀取,吐出任何被定義爲一個單獨的配置文件變量,然後火了針對動態內容的其他地方定義各種功能。所以,如果這可以做的工作,我在那裏有多達上面:
echo "The value of $array_element is foo."
將與一堆的各種功能(替換),將採用富爲$ 1,本質上。但是這部分讓我陷入困境。上面的測試(不出所料)在所有True命中時都會如預期的那樣失敗,因爲它只是確認$ array_element的確是根據$ array的讀數設置的。我被困在如何獲得定義在$ array_element之上的內容。如果你在文件的任何位置拋出一個「echo $ Var1」,它也輸出預期的「foo」,而不管它在哪裏。
你能在bash做到這一點?我不認爲我曾經見過這樣的變量,而且我不確定是否在某些機械問題/ bash限制或查看它的邏輯問題上陷入困境。我一直在用它和一些方法,並沒有運氣,谷歌和堆棧溢出搜索已經幹了。謝謝你的幫助。
[使用可變間接膨脹擊陣列擴展]的可能重複( http://stackoverflow.com/questions/12691121/bash-array-expansion-using-variable-indirection-expansion) – Barmar