2

最初のコマンドライン引数をチェックして、それがであるかどうかを確認する必要があります-cleanup。私のコードは次のとおりです。

if ( $* != null ) then

if ( "X$argv[$n]" == "X-cleanup" ) then
    echo "its cleanup"

まず、少なくとも1つの引数があることを確認します。 プログラムの開始時ににn設定されます。引数として1スクリプトを実行しようとすると、次のエラーが発生します。-cleanup

if: Malformed file inquiry.

オンラインで見つけたいくつかのフォーラム投稿から解決策を試しましたが、ダッシュを正しく処理する方法がわかりません。これはtcshシェルです。

4

1 に答える 1

2

このスクリプトスニペットは私のために働きました:

set n = 1
echo $argv[$n]
if ( "$argv[$n]" == "-cleanup" ) then
    echo "its cleanup"
endif

実行tcsh ./test-cleanup.tcsh -cleanupすると、次の出力が生成されます。

-cleanup
its cleanup

問題のあるコードは次の行です。引用符で囲まれていない場合-cleanup、cshインタープリターをファイルチェックと混同します。

if ( $* != null ) then

次の行に置き換えます。

if ( "$*" != "" ) then
于 2013-03-04T03:24:26.060 に答える