コマンドでは、1行に1つずつ繰り返したい文字列のリストを含む変数がありますfor...in...do...done
。
Bourne Shellとzshを頻繁に切り替えます。私が知っている限り、zshはデフォルトでBernシェルから改行やスペースで文字列から単語を分離しません。したがって、zshなどのコマンドfor list_item in $list; do...
は失敗しますが、bourneシェルでは機能するか、変数の代わりにリテラルテキストを使用できます。コマンドで変数を使用して参照しようとしましたが、IFS=
進歩がないようです。
簡単に実装できるように、両方のシェルで変更されていない状態で動作する文字列の単語/行を繰り返す単一の構文はありますか?そうでない場合、ベストプラクティスは何ですか?
ベストアンサー1
optionsを使用してbashと同様にzshのトークン化動作を明示的に設定すると、bashとzshの間の一貫した動作が得られますshwordsplit
。たとえば、
set -o shwordsplit
var='foo bar baz'
for item in $var; do
echo "$item"
done
IFS
これにより、zshはbashと同様に内部フィールド区切り文字()に基づいてトークン化を実行します。