0

シェルスクリプトに以下の行があります。

#!/bin/bash

counter=0
counter=$((counter+1))
echo $counter

そして、上記のシェルスクリプトを次のように実行する必要があります-

sh -x test.sh

上記のスクリプトを実行しようとすると、常に次のようなエラーが発生します-

`counter=$' unexpected

私がそこで行う必要がある変更点はありますか?

更新されたスクリプト:

#!/bin/bash

counter=0
counter=$(($counter+1))
echo $counter
4

4 に答える 4

2

標準ではないため、bash代わりに使用してみてください。sh$(( ... ))

于 2012-11-30T08:54:38.750 に答える
1

の古いバージョンを使用しているようですsh。次のスクリプトを使用してみてください。

#!/bin/bash

counter=0
counter=`expr $counter + 1`
echo $counter
于 2012-11-30T09:06:06.253 に答える
1

試す:

#!/bin/sh

counter=0
counter=`expr $counter + 1`
echo $counter

$ sh -x test.sh

+ counter=0
++ expr + 1
+ counter=1
+ echo 1
1
于 2012-11-30T08:55:13.520 に答える
0

古い構文に戻すことはお勧めしません。

使用するsh -x test.shことは、スクリプトのシバンを打ち負かすこと#!/bin/bashです。/ bin / bashの代わりに、スクリプトを解析するためのインタープリターとしてshを強制的に使用します。Solaris 10まで含まれている、/ bin / shは、POSIX以前の構文を持つ元のBourneシェルです。使用すべきではありませんが、レガシースクリプトで使用する必要があります。

次に、構文を理解するシェル、つまり次のいずれかを簡単に記述できます。

/usr/xpg4/bin/sh -x test.sh

また

/bin/bash -x test.sh

また

/bin/ksh -x test.sh

本当にsh -x test.shそのまま作業したい場合は、次のようにパスを設定してPOSIXモードに切り替えてください。

PATH=/usr/xpg6/bin:/usr/xpg4/bin:$PATH
于 2012-12-01T10:49:34.887 に答える