実行する前に、シェルスクリプトがコマンドライン引数を使用していることを確認してください。

実行する前に、シェルスクリプトがコマンドライン引数を使用していることを確認してください。

次のコードを見てみましょう。

#!/bin/bash
arg=$1
echo $arg

引数を使用して実行すると、引数が印刷されます。それ以外の場合は何も行いません。私が気になったのは、実行する前にコマンドライン引数が必要かどうかを調べることは可能ですか?

ベストアンサー1

sh- コマンドラインで引数を使用する互換性のあるシェルスクリプトには、通常、背中または$1それら$2の組み合わせが含まれます。しかし、これは必要でも十分ではありません!$3$@$*

これによりスクリプトがgrepさ​​れ、次の種類の文字列を含むすべての行が返されます。

grep '\$[1-9@*]' script.sh

コマンドライン引数を使用しないが引数を使用する関数を含むスクリプト、または評価されていない文字列にこれらの文字のみを含むスクリプトで偽の肯定が発生する可能性があります。たとえば、スクリプトに呼び出しが含まれている場合は、スクリプト自体を参照しないコマンドライン引数もawk含めることができます。$1

getoptスクリプトでこの文字列を見つけて、スクリプトがコマンドラインを使用しているか、getoptコマンドgetoptsラインを正しく解析するかを確認することもできます。

コマンドライン引数を使用できる状況の取得暗黙的に少し難しいです。たとえば、またはを使用すると、for variablename; do ... doneこれが発生しますselect variablename; do ... done。ただし、位置パラメータを明示的に入力するためにスクリプトが使用されている場合、setコマンドラインパラメータは影響を受けません。この問題を解決するには、スクリプトを目視で確認する必要があります。

「実生活」では、人々は付属の文書を読む。奇妙な理由で動作しない場合は、コードをお読みください。

おすすめ記事