2

1からの変数に格納されている数値まで実行されるbashのforループを作成したいと思いますbashこの質問に対する答えが示すことを実行しようとしましたが、次のエラーが発生します。

Syntax error: Bad for loop variable

私のOSはUbuntu12.04で、コードは次のようになります。

#!/bin/bash
TOP=10
for ((i=1; i<=$TOP; i++))
do
    echo $i
done

このエラーメッセージはどういう意味ですか?出力画像は次のとおりです。

ここに画像の説明を入力してください

4

3 に答える 3

10

Cスタイルのforループは少数のシェルでのみ機能し、bashはその中にあります。これは構文であり、POSIX標準の一部ではありません。

#!/bin/bash
TOP=10
for ((i=1; i<=$TOP; i++))
do
    echo $i
done

POSIX準拠のforループは次のようになります

#!/bin/bash
TOP=10
for i in $(seq 1 $TOP)
do
    echo $i
done

これはbashとshの両方で機能します。

ログインしているシェルを確認するには、次のコマンドを実行します

ps -p $$

ここで、$$は現在のプロセスのPIDであり、現在のプロセスはシェルであり、ps -pこのプロセスに関する情報を出力します。

ログインシェルを変更するには、chshコマンドを使用します。

于 2012-10-26T11:14:29.390 に答える
6

shではなく、を使用してスクリプトを実行していbashます。試す:

bash split_history_file_test.sh
于 2012-10-26T10:53:06.530 に答える
0

このコードはそのエラーを生成しません。そのubuntuバージョンに同梱されているbashバージョンは、問題なく実行できるはずです。

注:あなたはしたいですecho $i

于 2012-10-26T10:36:00.027 に答える