使用简单的bash脚本遇到这个奇怪的问题:
#!/bin/bash
function printLinesFromInput {
COUNTER=1
while read USER; do
echo "Hello $USER";
echo
done < $1
}
while read USER; do
echo "Hello $USER";
done < south-park.txt
echo
echo "In function:"
echo $(printLinesFromInput south-park.txt)
打印:
$ ./readFile.sh
Hello Eric
Hello Kyle
Hello Stan
Hello Kenny
In function:
Hello Kenny
该函数不回显文件的所有四行。 我想知道为什么会这样。 输入文件south-park.txt是:
Eric
Kyle
Stan
Kenny
答案 0 :(得分:1)
我认为输入文件south-park.txt
可能包含CR LF
换行符。
试着说:
./readFile.sh | less
然后你会看到:
Hello Eric
Hello Kyle
Hello Stan
Hello Kenny
In function:
Hello Eric^M Hello Kyle^M Hello Stan^M Hello Kenny
要解决此问题,请删除输入文件中的\ r \ n或将功能修改为:
function printLinesFromInput {
COUNTER=1
while read USER; do
echo "Hello $USER" | tr -d '\r'
done < $1
}
顺便说一句,如果你想在用户之间插入换行符,你需要另一个技巧: - )。