0

.tgz ファイルを特定のディレクトリ (デフォルトでは /tmp/) に出力する bash スクリプトを作成しています。このディレクトリをオーバーライドするオプションを提供したいと考えており、コマンド ラインで提供される引数を使用してオーバーライドすることを選択しました。

    while getopts d: option
    do
    case "${option}" in
    d) dir=${OPTARG};;
    esac
    done

書かれているように、これは機能しますが、ユーザー入力に応じて問題が発生しました.tgzファイルの名前も変数であり、これをすべてまとめるコードは次のとおりです.

    output="$dir""$name"

私が遭遇する問題は、ユーザーが実行した場合です

    ./script -d /home/user

私の結果のパスとファイル名は次のようになります

    /home/userfilename.tgz

末尾の / の要件を強制するか、ユーザーがそうしなかった場合は挿入する必要があります。それが機能している間、出力変数を

    output="$dir"/"$name"

ユーザーが末尾を提供した場合 / 私はこのようなものになってしまい、出力の美学を維持しようとしています.

    /home/user//filename.tgz

任意の入力をいただければ幸いです。

4

1 に答える 1

0

行を追加

output="${output//\/\///}"

入社後dirname

複雑に見えますが、2 つのスラッシュを 1 つに置き換えているだけです。

詳細については、こちらを参照してください。

于 2012-08-28T05:33:47.250 に答える