for 循环迭代某个文件的第 n 个位置

for 循环迭代某个文件的第 n 个位置

如何在 unix 中的 for 循环中迭代第 n 个文件?下面是我尝试过但没有成功的一些代码

#!/bin/bash
#
n=2
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )
for x in "${array[@]}"
for ((x=${array[@]}; x<=n; x++));
do
echo "array[x]"
done

答案1

以下是循环数组的两种方法:

#!/bin/bash
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )

echo Loop 1
for x in "${array[@]}"
do
    echo "$x"
done

echo Loop 2
for ((x=0; x<${#array[@]}; x++));
do
    echo "${array[x]}"
done

循环选定的项目

此脚本允许您在命令行上指定要处理数组中的哪些元素:

#!/bin/bash
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )

for x in "$@"
do
    echo "${array[x]}"
done

假设我们想循环前两个并跳过第三个。 (由于bash使用从零开始的索引,前两个是数字 0 和数字 1。)使用:

$ bash script.sh 0 1
CTL_MLPOSDTLP1_1.ctl
CTL_MLPOSDTLP1_2.ctl

仅运行第三个:

$ bash s.sh 2
CTL_MLPOSDTLP1_3.ctl

迭代从0n-1

for ((x=0; x<n; x++));
do
    echo "${array[x]}"
done

答案2

#!bin/bash
n=2
array=( "CTL_MLPOSDTLP1_1.ctl" "CTL_MLPOSDTLP1_2.ctl" "CTL_MLPOSDTLP1_3.ctl" )
for ((x=0; x<=n-1; x++));
do
    echo "${array[x]}"
done

感谢@john 在我编辑并获得正确输出时提供的帮助;现在正在工作:)

相关内容