私のスクリプトでは、最初の唯一の引数が-vと等しいかどうかをエラーチェックしようとしていますが、これはオプションの引数です。ifステートメントを使用していますが、単項演算子の予期されるエラーが発生し続けます。
これはコードです:
if [ $1 != -v ]; then
echo "usage: $0 [-v]"
exit
fi
編集:
より具体的に説明する必要があります。上記のスクリプトのこの部分はオプションの引数をチェックし、その後、引数が入力されていない場合は、プログラムの残りの部分を実行する必要があります。
#!/bin/bash
if [ "$#" -gt "1" ]; then
echo "usage: $0 [-v]"
exit
fi
if [ "$1" != -v ]; then
echo "usage: $0 [-v]"
exit
fi
if [ "$1" = -v ]; then
echo "`ps -ef | grep -v '\['`"
else
echo "`ps -ef | grep '\[' | grep root`"
fi
その部分は正しく、現在のスクリプトの名前を表示します。
—
user3380240 2014年
stackoverflowへ、特にbashタグへようこそ!このような多くの問題を指摘する(常に説明しているわけではありませんが)shellcheckなどの便利なツールとリソースについては、タグWikiをチェックしてください。
—
他の男、
@ user3380240 は、現在のスクリプトの名前で
—
Charles Duffy
$-
はありません。$0
です。
すみません、それはタイプミスでした。
—
user3380240 2014年
echo "usage: $0 [-v]"
;$-
現在のスクリプトの名前ではなく、アクティブなシェルオプションフラグを表示します。