0

重複の可能性:
bash スクリプトに数字を追加するにはどうすればよいですか

for ループで値を変更する変数があります。

for i in {1..10..1}
  do
    while ((count < max+1))
      do 
        echo $count >> /directory/outfile_${max}.txt
        ((count++))
      done
    max=$max+100
  done

10 個の出力ファイルには、「outfile_100.txt」、「outfile_200.txt」などの名前が必要です。

しかし、何が起こるかというと、「outfile_100+100+100....txt」のようになります。

サイズを変更する方法はありmaxますか?

4

4 に答える 4

3

max=$max+100 は文字列操作です。「変数 $max で表される文字列を代入し、その文字列と文字列 "+100" を取り、それを変数 max に代入します」と言っているのです。たとえば、次のように言えます。

max=IamSoSexy+100

シェルには型がまったくなく、文字列しかないためです。探しているのは、引数を数値として解釈するコマンドです。あなたがしたい:

let max=$max+100

「let」コマンドがリフティングを行うためです。

于 2012-10-11T15:11:19.430 に答える
2

算術式を計算しようとしましたが、これは単純な代入では起こりません。max=$(($max + 100)) を使用

于 2012-10-11T15:08:42.797 に答える
1

に整数属性を設定してmax、算術評価が自動的に実行されるようにすることもできます。

declare -i max
for i in {1..10..1}
do
    while ((count < max+1))
    do 
        echo $count >> /directory/outfile_${max}.txt
        ((count++))
    done
    max+=100
done
于 2012-10-11T15:52:17.113 に答える
1

またはexprを使用

max=`expr $max + 100`
于 2012-10-11T15:10:00.550 に答える