我有一个bash脚本,我在其中定义了一个特定的路径:
MY_PATH=/to/my/path
我在MY_PATH中也有一组目录,我将这些目录存储在一个数组中,如下所示:
DIRECTORIES="/dir1/
/dir2/
/dir3/"
我想要做的是迭代$ MY_PATH中的所有$ DIRECTORIES,所以我尝试了这个:
for dir in $MY_PATH$DIRECTORIES
do
echo "Processing $dir"
end
但是,这会产生以下不良输出:
Processing /to/my/path/dir1/ #Correct!
Processing /dir2/ #What I want: Processing /to/my/path/dir2/
Processing /dir3/ #What I want: Processing /to/my/path/dir3/
有没有办法阻止迭代超过$ MY_PATH,同时保留迭代$ DIRECTORIES以便我可以实现所需的输出(见上文)?
答案 0 :(得分:3)
for dir in $DIRECTORIES; do
path="$MY_PATH/$dir"
echo "Processing $path"
done
答案 1 :(得分:2)
那不是阵列,顺便说一下。使用数组看起来像这样:
MY_PATH=/to/my/path
DIRECTORIES=(dir1 dir2 dir3)
for dir in "${DIRECTORIES[@]}"; do
path="$MY_PATH/$dir"
echo "Processing $path"
done
(这不是答案,但上面的代码不适合评论。:))
答案 2 :(得分:0)
如果文件夹名称中有空格
MY_PATH="/to/my/path"
您正在使用新行来分隔文件夹
DIRECTORIES="/dir1/
/dir2/
/dir3/"
一个稍微安全的循环
OLDIFS=$IFS
IFS=$'\n'
for dir in $DIRECTORIES; do
path="$MY_PATH/$dir"
echo "Processing $path"
done
IFS=$OLDIFS