2017-10-19 226 views
-1

我這樣做:bash命令輸出

VAL=$(wc -l < file_with_5_lines) 
for i in {1..${VAL}}; do echo $i; done 

期待這樣的結果:

1 
2 
3 
4 
5 

的是相反,我得到這個:

{1..5} 

編輯

此問題被標記爲重複,但其他問題的接受答案在我看來無效。提出的解決方案是這樣的:

VAL=$(wc -l < file_with_5_lines) 

for i in {1..$((VAL))}; do 
     echo $i 
done 

,並繼續給我這樣的結果:

{1..5} 

相反的:

1 
2 
3 
4 
5 
+2

只寫一個正常的數字'for'循環。 –

回答

2

在param之前完成Brace擴展eter擴展,這就是爲什麼我們不能在{...}結構中有一個變量。使用for循環有規律,讓你不依賴於外部命令狀seq

for ((i = 1; i <= VAL; i++)); do 
    # your code here 
done 
+0

這是最好的解決方案,沒有外部命令 – Sergio

1

嘗試下面的代碼,

VAL=$(wc -l < file_with_5_lines) 
for i in `seq ${VAL}` 
do 
    echo $i 
done 
+0

這工作正常 – Sergio

0
VAL=$(wc -l < file_with_5_lines) 
for i in $(seq $VAL);do echo $i;done 
+1

這裏有什麼問題? – L30n1d45

+1

試試這裏:https://www.jdoodle.com/test-bash-shell-script-online 'echo -e「line1 \ nline2 \ nline3 \ nline4 \ nline5」> input.txt; VAL = $(wc - l L30n1d45

+0

這工作正常 – Sergio