我有一个 #!/bin/sh 脚本,我需要多次读取管道输入。
我迭代它的方式似乎丢弃了它,例如以下内容;
while read LINE; do
echo "-- $LINE"
done
while read LINE; do
echo "## $LINE"
done
调用时
find ~/Desktop | ./my.sh
产生
-- /Users/me/Desktop/some.txt
-- /Users/me/Desktop/other.txt
不是
-- /Users/me/Desktop/some.txt
-- /Users/me/Desktop/other.txt
## /Users/me/Desktop/some.txt
## /Users/me/Desktop/other.txt
如果我需要多次使用它,有没有办法保留这个输入?
谢谢。
最佳答案
您需要自己保存输入。
#!/bin/sh
i=0;
while read LINE; do
LINES[$i]="${LINE}"
i=$((i+1))
done
for ENTRY in "${LINES[@]}"; do
echo "-- ${ENTRY}"
done
for ENTRY in "${LINES[@]}"; do
echo "## ${ENTRY}"
done
示例输出:
ls /bin/b*|./test.sh
-- /bin/basename
-- /bin/bash
## /bin/basename
## /bin/bash
关于bash/shell 多次读取 LINE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17221488/