
このbashスクリプトがあります。
for opt in string1 string2 string3 ... string99
do somestuff
うまくいきますが、明示的な文字列のリストを実際に次のすべての文字列を含むファイルに置き換えたいと思います。
strings=loadFromFile
for opt in $strings
do somestuff
どうすればいいですか?
答え1
while read VAR
各入力行を処理するので、おそらくここが一番良いでしょう。次のファイルからリダイレクトできます。
while IFS= read -r THELINE; do
echo "..$THELINE"
done </path/to/file
これにより、「..」が前に付いた各行が表示されます。
あなたのケースの場合:
while IFS= read -r opt; do
#somestuff $opt
done </path/to/file
バラより"IFS=;"代わりに「IFS = Read」が頻繁に使用されるのはなぜですか?説明のために。
答え2
while IFS= read -r opt
do
some_stuff
done < file_with_string
バラより"IFS=;"代わりに「IFS = Read」が頻繁に使用されるのはなぜですか?説明のために。
答え3
これがwhile IFS= read -r line; do ...; done < aFile
最善の答えです
文字列にいいえまたはスペースを含めること\[*?
ができます
for word in $(< aFile); do something; done
$(< file)
ファイルを読み取るbashの機能です(に似ていますcat
が、新しいプロセスを作成しません)。
答え4
私のアドバイス:
cat INPUTFILE| {
declare -a LINES
mapfile -t LINES
for line in "${LINES[@]}"
do
somestuff
done
}