我有一个 shell 脚本,我将 txt 文件传递给脚本,如下所示:
./run.sh < list.txt
在剧本中,我正在做一个"while read LIST do ... end
一切正常,脚本使用列表执行。
但是,现在我想在同一个 shell 脚本中拥有第二个while read LIST do ... end
。 我希望它从原始列表中再次读取,我在执行时传递它,但它不起作用。 它读取第一个循环的列表.txt文件,但不读取第二个循环。
每次我要求脚本时.txt我该怎么做才能使脚本阅读列表?
你不能读两次标准。尝试在命令行上传递 list.txt,而不是重定向它。
./run.sh list.txt
然后在脚本中:
while read LINE; do
...
done < "$1"
while read LINE; do
...
done < "$1"
或者,在第一次通读时保存 stdin 的内容。例如:
# First loop, save stdin in an array.
LINES=()
while read LINE; do
LINES+=("$LINE")
...
done
# Second loop, iterate over the array.
for LINE in "${LINES[@]}"; do
...
done