2016-12-02 7 views
0

私はshスクリプトに慣れていないのでこの質問を書いていますが、次の行は/ bin/bashで動作しますが、/ bin/shを使う必要があります。以下のコードは次のとおりです。shスクリプトが関数内のグローバル変数にアクセスする

#!/bin/sh 

trythis=1 

test() 
{ 
    ((trythis++)) 
    echo $trythis 
} 

test 

私は出力として2を期待する代わりに、私は次のエラーを取得:

./test: 7: ./test: trythis++: not found 
1 
+1

'#!/ bin/sh'の代わりに'#!/ bin/bash'を使用してください。 – anubhava

+2

問題はBash構文 ' trythis ++)) 'であり、変数自体ではありません。 @anubhavaが指摘しているように、bashismを使用する場合はBashを使用してください。 – fedorqui

答えて

1

代わりの

((trythis++)) 

これを使用する:

trythis=`expr $trythis + 1` 

expr(1) is引数1+1を受け取る外部プログラムは、計算を行い、2を返します。これは、バックティックのためtrythisに割り当てられています。 (man exprを参照し、expr 1 + 2のようなものをコンソールに入力してください)

+0

ちょっと働いた!あなたは私にリンクしたり、なぜこれがどういうふうに説明してくれますか? – daemoner119

+0

答えを更新しました。 –

+1

'expr'の必要はありません。 'trythis = $((trythis + 1))'はPOSIX準拠のシェルで動作します。 – chepner

関連する問題