Path
PATH中for循環變數的正確語法是什麼?
我必須執行以下循環:
root1=path/to/root1 root2=path/to/root2 for i in {1..2}; do ${root${i}}; done
它沒有提供所需的輸出:
path/to/root1 path/to/root2
管理員建議執行緒帶來的解決方案不會導致我尋求的結果,例如
for i in {1..2}; do \$root$i; done
輸出:
$root1 $root2
假設您使用的是
bash
shell,看起來好像您想使用一個數組:root[1]=path/to/root1 root[2]=path/to/root2 for i in {1..2}; do printf '%s\n' "${root[i]}" done
或者,將賦值寫入
root
單個數組賦值(請注意,bash
除非使用顯式索引,否則數組中的第一個索引為 0),root=( path/to/root1 path/to/root2 ) for i in {0..1}; do printf '%s\n' "${root[i]}" done
和/或,遍歷數組的值(不是它的索引),
root=( path/to/root1 path/to/root2 ) for i in "${root[@]}"; do printf '%s\n' "$i" done
(僅輸出數組,不需要循環,
printf '%s\n' "${root[@]}"
足以在單獨的行上列印數組的值)通常,您可能不知道數組使用了哪些索引(數組可能具有不連續的索引),因此要遍歷可用索引,您將遍歷
"${!root[@]}"
:root=( path/to/root1 path/to/root2 ) for i in "${!root[@]}"; do printf '%s\n' "${root[$i]}" done