Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止循环的bash脚本中的变量迭代_Bash_Iteration - Fatal编程技术网

防止循环的bash脚本中的变量迭代

防止循环的bash脚本中的变量迭代,bash,iteration,Bash,Iteration,我有一个bash脚本,在其中我定义了一个特定的路径: MY_PATH=/to/MY/PATH 我在我的_路径中还有一组目录,我将这些目录存储在一个数组中,例如: DIRECTORIES="/dir1/ /dir2/ /dir3/" 我想做的是迭代$MY_PATH中的所有$directory,因此我尝试了以下方法: for dir in $MY_PATH$DIRECTORIES do echo "Processing $dir" end 但是,这会产生以下不期望的输出: Process

我有一个bash脚本,在其中我定义了一个特定的路径:

MY_PATH=/to/MY/PATH

我在我的_路径中还有一组目录,我将这些目录存储在一个数组中,例如:

DIRECTORIES="/dir1/
/dir2/
/dir3/"
我想做的是迭代$MY_PATH中的所有$directory,因此我尝试了以下方法:

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_路径上迭代,同时保留在$DIRECTORIES上的迭代,以便实现所需的输出(请参见上文)?

这不是数组,顺便说一句。使用数组将如下所示:

MY_PATH=/to/my/path
DIRECTORIES=(dir1 dir2 dir3)
for dir in "${DIRECTORIES[@]}"; do
  path="$MY_PATH/$dir"
  echo "Processing $path"
done

(这不是答案,但上面的代码不适合作为注释。:)

这不是数组,顺便说一句。使用数组将如下所示:

MY_PATH=/to/my/path
DIRECTORIES=(dir1 dir2 dir3)
for dir in "${DIRECTORIES[@]}"; do
  path="$MY_PATH/$dir"
  echo "Processing $path"
done

(这不是答案,但上面的代码不适用于注释。:)

如果文件夹名称中有空格

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

如果文件夹名称中有空格

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