
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
配列を繰り返す2つの方法は次のとおりです。
#!/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
最初の2つは繰り返し、3番目はスキップしたいとします。 (0 ベースの索引付けのため、bash
最初の 2 つは数字 0 と数字 1 です。) 以下を使用します。
$ bash script.sh 0 1
CTL_MLPOSDTLP1_1.ctl
CTL_MLPOSDTLP1_2.ctl
3番目の項目を実行してください。
$ bash s.sh 2
CTL_MLPOSDTLP1_3.ctl
0
からまで繰り返すn-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に感謝します。 :)