shシェル:引用符で$ 1を使用する方法

shシェル:引用符で$ 1を使用する方法

私はこのコードを使用しています:

#!/bin/sh
if [ $# -lt 2 ]
then
    echo "wrong syntax"
    echo "ct_cmp.sh <label1> <label2> [<file_extension>]"
else
    if [ $# -eq 2 ]
    then
        cleartool find . -version 'lbtype($1) && \!lbtype($2)' -print
    fi
fi

しかし、次の結果が得られます。

クリーンアップツール:

Error: Invalid query: "lbtype($1) && \!lbtype($2)"

ベストアンサー1

一重引用符はパラメータの拡張を防ぎます。

'lbtype($1) && \!lbtype($2)'

で動作する必要があります"'lbtype($1) && \!lbtype($2)'"

ちなみに、シェルスクリプトで作業するときに私が使用するツールの1つはshellcheckを使ってそれをチェックすることです。https://www.shellcheck.net/(スタンドアロンの実行可能ファイルでも利用可能) もちろん、簡単な引用についても同じことがわかります。

おすすめ記事