字符串数组扩展为路径?

ura*_*ray 3 bash array string

假设我有以下 bash 数组的初始化:

my_array=(
    "/usr/bin"
    "/usr/lib/*.so"
)
Run Code Online (Sandbox Code Playgroud)

如果我使用以下方法进行迭代:

for array_item in ${my_array[@]} 
do 
    ... 
done 
Run Code Online (Sandbox Code Playgroud)

然后my_array扩展的内容包含 /usr/lib/ 目录中具有 .so 扩展名的任何文件的路径。但我只希望数组包含两个字符串,即"/usr/bin""/usr/lib/*.so"

我该怎么做?

Mac*_*tka 5

for array_item in "${my_array[@]}"
do 
    ...
done
Run Code Online (Sandbox Code Playgroud)

或者

for idx in $(seq ${#my_array})
do
    array_item="${my_array[$idx]}"
done
Run Code Online (Sandbox Code Playgroud)

  • 我认为 `for idx in ${!a[@]}` 比使用 `seq` 更可取,因为它避免了不必要地使用外部程序并且即使数组很稀疏也能工作。 (2认同)