私はforループを書いています。しかし、ループは位置引数の内容に依存します。bash:2つの異なるループの分岐の場合
位置引数が
seq 2 1 10
ある場合、ループは位置引数は、1 2 5 7 10
として純粋に数値である場合、ループはfor i in 1 2 5 7 10
あるfor i in $(seq 2 1 10)
あります。
私はこれを試してみましたが、それはうまくいきませんでした:
test() {
if [[ $1 == seq ]]
then
for i in $(seq $2 $3 $4)
else
for i in [email protected]
fi
do
echo $i
done
}
私もこれを試してみました:
test2() {
if [[ $1 == seq ]]
then
sss="for i in $(seq $2 $3 $4)"
else
sss="for i in [email protected]"
fi
$sss
do
echo $i
done
}
も動作しません。
は、だから私の質問は以下のとおりです。
- 私は内部の場合は、明示的な2つのループを書くことができます知っています。しかし、ループの内容が大きい場合、これはコードスペースの無駄です。もっと良い方法はありますか?
- 私の2番目の試みでは、なぜ
$sss
がfor
文に展開され、bashによって適切に解析されないのですか?
'test'はシェル組み込みの' test'と衝突するので、関数のための最良の名前ではありません。 – codeforester