2016-04-25 1 views
1

で引用符で囲まれていない変数を引用し、我々はすべて私たちのスクリプトで何を参照してください我々は、エラー/警告のために私たちのスクリプトをチェックする<a href="https://github.com/koalaman/shellcheck" rel="nofollow">shellcheck</a>を使用して起動するシェルスクリプト

今の一般的な警告が引用符で囲まれていない変数です。
これらの簡単な警告/エラーを修正するスクリプトはありますか?
は私が、私は次のように私はそれを修正$VAR

sed -i -r 's:\$([_a-zA-Z?][_a-zA-Z0-9]*):${\1}:g' <scriptname>

${VAR}に変更するために使用するコマンドの下に持っているコマンド上記
sed -i -r 's:\$([_a-zA-Z?][_a-zA-Z0-9]*):"${\1}":g' <scriptname>

変数は引用符で囲まれていないされているとき正常に動作しますが、それらは、例えば引用されている場合よりそれをやり続けるかどうかの提案はありませんか?

何か特別なご提案ですか?

+0

すでに引用符があるかどうかを確認してください。 ''/yadda "* /" yadda "/ '' – 123

+2

クォート変数は、覚えておくと便利な基本的なものです。あなたがそれを忘れて、それをやっている小さなスクリプトに頼っているならば、あなたは危険に近づいています:スクリプトが失敗し、他のことが間違っているかもしれない、変数を引用するこの原則を忘れて、これは、あなたのベルトを固定するためのスクリプトを作成するようなものです:私はそれがあなたが飛行機に座っているときにそれを行うことを忘れない方が良いと思う。 – fedorqui

+0

@fedorquiの問題は、私たちが作業を開始したときで、私たちはすべて新しいものであり、私たちは改善しましたが、修正する必要のあるスクリプトがたくさんありました。しかし、それぞれの行を変更するのは退屈なので、 。 – AnkurTank

答えて

2

慎重に編集してください。
echo "This is example ${var} in the middle of the line"と書くときは、引用符を入れたくない場合は${var}としてください。
PATH、PWD、およびその他のシステム変数以外のすべての変数を小文字にする必要があります。 にマッピングを追加して、F5のF4(. ! ~/bin/make_my_varのようなもの)を使ってsedの第1または第2のコマンドラインを実行するとよいでしょう。 make_my_varでは、それらが例外のリストの1つでないときに、変数を小文字にするロジックを追加できます。 そして(編集された): おそらくstyleguideを使用して、さらにいくつかの基準が必要な場合があります。

関連する問題

 関連する問題