2013-06-30 69 views
1

我有一個劇本的時候 這讀取文件的字符是我使用的腳本慶典:每次從一個字符串一個字符閱讀文本

INPUT=/path/ 
while IFS= read -r -n1 char; do 
    echo $char 
done < "$INPUT" 

它工作正常,只是我找不到了如何每個字符存儲到一個變量 即時尋找類似

N$X=$char

其中X =計數或字符和$字符=字符

任何幫助,將不勝感激。謝謝!

回答

1

你可以做這樣的事情:

X=0 
while IFS= read -r -n1 char; do 
    eval "N$X=\$char" 
    X=`expr $X + 1` 
done < "$INPUT" 

在循環結束時,X0X1X2等將包含在已被讀取的各種人物

+0

這個作品我想要的方式來 非常感謝你 –

+0

不客氣。但請[接受我的回答](http://stackoverflow.com/help/someone-answers)如果它適合你。 –

+0

只要輸入文件包含空格,這不會失敗嗎? – ruakh

2

作爲。一般的事情,有像N1,N2N2等變量,並希望能夠訪問他們像N$ii另一個變量是非常糟糕的。對此的解決方案在陣列中。下面是我將如何使用數組,而不是解決問題:

n=() 
i=0 
while read -r -n1 n[i]; do 
    echo "Character $i is ${n[i]}" 
    ((++i)) 
done < "$INPUT" 

在這一點上,你有你的字符數組n(當然不是全部,他們)英寸你可以有

${n[k]} 

(記住,數組索引從0開始)訪問字符k+1


另一種可能性是在一個字符串發出聲音的一切,它是像這樣簡單:

string=$(< "$INPUT") 

,你可以有

${n:k:1} 

訪問字符k+1(取子長度1從索引k開始)。循環上的所有字符可以做的是:

for ((k=0;k<${#string};++k)); do 
    echo "Character $k is '${string:k:1}'" 
done 
相關問題