#!/bin/sh
num=1
cat $1 | while read LINE
do
num=`expr $num + 1`
done
echo $num
答案 0 :(得分:1)
cat
之后使用管道时,您的脚本会产生一个子shell。在子循环结束后,子shell内的$num
所做的所有更改都会丢失,并且您将返回到父shell。num
而不是0
1
$(...)
进行命令替换,而不是反向勾号。您应该使用:
#!/bin/sh
num=0
while read -r line
do
num=$(expr $num + 1)
done < "$1"
echo $num