我試圖做這樣的事情在shell腳本:對於shell腳本
STEP=5
LIST=[1-$STEP]
for i in $LIST
echo $i
done
我期望的輸出是:
1 2 3 4 5
我大概有前(如看到這種用法[AZ ]),但我不記得正確的語法。感謝您的幫助!
我試圖做這樣的事情在shell腳本:對於shell腳本
STEP=5
LIST=[1-$STEP]
for i in $LIST
echo $i
done
我期望的輸出是:
1 2 3 4 5
我大概有前(如看到這種用法[AZ ]),但我不記得正確的語法。感謝您的幫助!
試試這個。請注意,您使用包含LF的echo命令。使用echo -n以獲取在同一行上輸出,如圖
STEP=5
for i in `seq 1 $STEP`; do
echo $i
done
請注意'seq'不是POSIX實用程序,可能無法使用。不應該使用'echo -n';使用'printf'來代替,它可以輕鬆地抑制換行符。 – Jens 2013-05-22 09:32:20
假設這是bash下
$ echo {1..5}
1 2 3 4 5
$ STEP=5
$ echo {1..$STEP}
{1..5}
$ eval echo {1..$STEP}
1 2 3 4 5
這是很棒的,直到你在一個名爲「1」的文件的目錄中運行它,因爲某些骨頭類型的重定向錯誤。然後{1..5}擴展爲「1」,並花費*小時*嘗試診斷問題。 :) 除非您使用noglob,因爲您之前完成了此操作,並且再也不想再遇到這個問題。 – dannysauer 2012-04-08 03:16:57
@dannysauer Brace擴展不是文件名稱通配符。 'echo {1..5}'輸出'1 2 3 4 5'是否存在名爲'1'的文件。你用'echo [1-5]'來混淆這個嗎? – Jens 2013-05-22 09:28:21
@dannysauer,自己驗證:記錄擴展的bash序列:http://www.gnu.org/software/bash/manual/bashref.html#Shell-Expansions – 2013-05-22 14:41:48
像這樣也許:http://stackoverflow.com/questions/169511/how-do -i-iterate-a-range-of-numbers-in-bash – minopret 2012-02-24 05:34:09