Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Shell 如何遍历Ksh中的多个字符串_Shell_Loops_Unix_Copy_Ksh - Fatal编程技术网

Shell 如何遍历Ksh中的多个字符串

Shell 如何遍历Ksh中的多个字符串,shell,loops,unix,copy,ksh,Shell,Loops,Unix,Copy,Ksh,我希望使用一个for循环遍历多个字符串,以便在Unix脚本中执行一系列文件复制操作 因此,给定一些表示目录的字符串: file1="${HOME_PATH}/data1.dat" file2="${HOME_PATH}/one/model1/data2.dat" file3="${HOME_PATH}/two/model2/data3.dat" file4="${HOME_PATH}/three/model3/data4.dat" file5="${HOME_PATH}/three/model4

我希望使用一个for循环遍历多个字符串,以便在Unix脚本中执行一系列文件复制操作

因此,给定一些表示目录的字符串:

file1="${HOME_PATH}/data1.dat"
file2="${HOME_PATH}/one/model1/data2.dat"
file3="${HOME_PATH}/two/model2/data3.dat"
file4="${HOME_PATH}/three/model3/data4.dat"
file5="${HOME_PATH}/three/model4/data5.dat"
file6="${HOME_PATH}/three/model5/data5.dat" 
我想将其中的每一个复制到特定目录:

dest1="${DEST_PATH}/data1.dat"
dest2="${DEST_PATH}/one/model1/data2.dat"
dest3="${DEST_PATH}/two/model2/data3.dat"
dest4="${DEST_PATH}/three/model3/data4.dat"
dest5="${DEST_PATH}/three/model4/data5.dat"
dest6="${DEST_PATH}/three/model5/data5.dat"
有没有一种方法可以像我上面所做的那样列出每个文件位置,然后简单地按照以下行列出for循环

for each i in {1..6}
do
   cp file[i] dest[i]
done

您可以对此使用间接寻址:

for i in {1..6}
do
  file="file$i"
  dest="dest$i"
  echo "${!file} ${!dest}" #or whatever you want to do with each file
done

BASH允许您间接地扩展一个参数,即 变量可能包含另一个变量的名称:

 # Bash
 realvariable=contents
 ref=realvariable
 echo "${!ref}"   # prints the contents of the real variable

您可以对此使用间接寻址:

for i in {1..6}
do
  file="file$i"
  dest="dest$i"
  echo "${!file} ${!dest}" #or whatever you want to do with each file
done

BASH允许您间接地扩展一个参数,即 变量可能包含另一个变量的名称:

 # Bash
 realvariable=contents
 ref=realvariable
 echo "${!ref}"   # prints the contents of the real variable

如何
find
并在循环中使用
mkdir-p${filename%*/}
cp
?那么就不需要在子路径中指定后缀,也不需要对它们进行迭代。各位,很抱歉,因为进一步研究,我必须为KSH而不是BASH实现它(mu理解是语法会有所不同),我使用了以下命令:
set-A fnames“那么
find
和使用
mkdir-p呢${filename%*/}
cp
在循环中?这样就不需要在子路径中指定后缀,也不需要对它们进行迭代。抱歉,伙计们,因为进一步研究,我必须为KSH而不是BASH实现这一点(理解是语法会有所不同),我使用了以下命令:
set-a fnames”