はい、可能です。複数の方法があります。変数にプレフィックス/サフィックス展開構文を使用できます (例: ${var#prefix}
, ${var##prefix}
, ${var%suffix}
, ${var%%suffix}
- これらは、指定されたパターンに一致する最短または最長のプレフィックス/サフィックスを削除します)。または、位置パラメータをegに置き換えることもできますIFS=, set -- ${var}
(ただし、ループを続行できるように、最初に元のパラメータの残りを何らかの方法で保存する必要があります)。のバージョンが十分に新しい場合は、配列を使用できますbash
(そうでない場合は、かなり古いものです...)。これらはおそらくより良い方法の3つですが、他にもあります...
編集:サフィックス/プレフィックス展開を使用したいくつかの例:
for tuple in first_file.xls,1
do
echo ${tuple%,*} # "first_file.xls"
echo ${tuple#*,} # "1"
done
タプルが 2 項以上の場合、その方法はもう少し複雑になります。例えば:
for tuple in x,y,z
do
first=${tuple%%,*}
rest=${tuple#${first}}
second=${rest%%,*}
last=${rest#*,}
done
その場合、あなたは @chepner のIFS=, read first second third <<< "${tuple}"
... の答えを好むかもしれません。タプルから配列を設定することも、許容される代替手段です。
ただし、単純なペアの場合は、必要に応じてプレフィックス/サフィックスを削除することを好む傾向があります...