![Bash 迭代字符串列表](https://linux22.com/image/25684/Bash%20%E8%BF%AD%E4%BB%A3%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%97%E8%A1%A8.png)
我有这个 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
答案2
while IFS= read -r opt
do
some_stuff
done < file_with_string
答案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
}