将变量添加到 bash 数组中的所有项目
Prepending a variable to all items in a bash array
CURRENTFILENAMES=( "$(ls $LOC -AFl | sed "1 d" | grep "[^/]$" | awk '{ print }')" )
我已经写了上面的代码,但是它在 for 循环中的表现并不像我预期的那样,我是这样写的
for a in "$CURRENTFILENAMES"; do
CURRENTFILEPATHS=( "${LOC}/${a}" )
done
我希望将变量 LOC
中的值添加到 CURRENTFILENAMES
数组中的所有项目中,但是它只是将其添加到数组的开头,我怎么能解决这个问题?
您需要使用 +=
运算符追加到数组中:
CURRENTFILEPATHS+=( "${LOC}/${a}" )
但是不建议解析 ls
输出,请改用 find
。
编辑: 运行 这个循环的正确方法:
CURRENTFILEPATHS=()
while IFS= read -d '' -r f; do
CURRENTFILEPATHS+=( "$f" )
done < <(find "$LOC" -maxdepth 1 -type f -print0)
CURRENTFILENAMES=( "$(ls $LOC -AFl | sed "1 d" | grep "[^/]$" | awk '{ print }')" )
我已经写了上面的代码,但是它在 for 循环中的表现并不像我预期的那样,我是这样写的
for a in "$CURRENTFILENAMES"; do
CURRENTFILEPATHS=( "${LOC}/${a}" )
done
我希望将变量 LOC
中的值添加到 CURRENTFILENAMES
数组中的所有项目中,但是它只是将其添加到数组的开头,我怎么能解决这个问题?
您需要使用 +=
运算符追加到数组中:
CURRENTFILEPATHS+=( "${LOC}/${a}" )
但是不建议解析 ls
输出,请改用 find
。
编辑: 运行 这个循环的正确方法:
CURRENTFILEPATHS=()
while IFS= read -d '' -r f; do
CURRENTFILEPATHS+=( "$f" )
done < <(find "$LOC" -maxdepth 1 -type f -print0)