Ksh

讀取儲存在變數 Ksh Unix 中的文件

  • February 25, 2017

我很難讀取儲存在變數中的文件。它應該很簡單,但不知何故我錯過了一些東西,找不到什麼?

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

這是一個非常基本且簡單的腳本,可以像這樣計算行數,但是當我使用變數done < $mip而不是文件名done <fila.txt 時。該腳本只輸出文件內容,如cat fila.txt,而不是計算行數。

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

有任何想法嗎 ??

done &lt;$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 &lt;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 &lt;filea.txt )
printf 'line %d\n' {1..$count}

引用自:https://unix.stackexchange.com/questions/346391