读取存储在变量 Ksh Unix 中的文件

读取存储在变量 Ksh Unix 中的文件

我很难读取存储在变量中的文件。它应该很简单,但不知何故我错过了一些东西,无法找出什么?

count=0 
mip="$(<fila.txt)"
while read -r line
do
  count=`expr $count + 1`
  echo "line $count "   
done < $mip

这是一个非常基本且简单的脚本,可以像这样计算行数,但是当我使用变量时完成 < $mip而不是文件名完成 < fila.txt。该脚本仅输出文件内容,例如猫 fila.txt而不是计算行数。

line 1
line 2
line 3
line 4
line 5
line 6

有任何想法吗 ??

答案1

done <$mip仍然假设这$mip是一个文件名。它不是。

你想要的可能是这样的

printf '%s\n' "$mip" |
while IFS= read -r line; do
   printf 'line %d\n' "$(( ++count ))"
done

更直接的解决方案是

while IFS= read -r line; do
   printf 'line %d\n' "$(( ++count ))"
done <filea.txt

甚至

cat -n filea.txt | sed 's/^ *\([0-9]*\).*$/line \1/'

最后一个命令将用于cat枚举文件中的行并sed删除实际的文件内容。

或者,使用awk,这更简单:

awk '{ printf("line %d\n", NR) }' filea.txt

或者,如果您首先计算文件中的行数:

count=$( sed -n '$=' filea.txt )    # or:  count=$( wc -l <filea.txt )
printf 'line %d\n' {1..$count}

相关内容