而读线奇怪的输出

时间:2014-07-27 09:54:30

标签: while-loop output sh

我有一个逐行读取文件的脚本。 每行有许多用白色空格分隔的列,如:     1a 1b 1c 1d     2a 2b 2c 2d     3a 3b 3c 3d

我想对每一行的第一列采取行动。 所以我有脚本:

#!/bin/sh
file_name=myfile.txt

while read line
do
ve=`cut -d " " -f1`
echo "This is $ve"
done < $file_name

但输出是:

This is 1a
2a
3a

而不是

This is 1a
This is 2a
This is 3a

1 个答案:

答案 0 :(得分:1)

cut的第一个实例会占用所有输入。

你可能意味着

ve=`echo "$line" | cut -d " " -f1`

我建议您也很好地引用变量:

#!/bin/sh
file_name=myfile.txt
while read line; do
    ve=`echo "$line" | cut -d ' ' -f1`
    echo "This is $ve"
done < "$file_name"