パスが存在するかどうかをチェックする関数の問題

パスが存在するかどうかをチェックする関数の問題

SRC私は bash スクリプトにあまり詳しくないのですが、このプログラムでユーザーからディレクトリ パスを取得し、そのディレクトリが存在するかどうかを確認しようとしていました。関数内の変数がdir_inputに渡されていないようですdir_input。よろしくお願いします。

dir_input() {
    echo -n "Enter targer directory: "
    read SRC
}
dir_input_check() {
    if [ ! -d "$SRC" ]; then
        echo ERROR: "Target directory not found - Please try again."
        dir_input
    fi
}

dir_input
dir_input_check

答え1

私にはうまくいったようです。

#!/bin/bash -x

トレースを取得するために上部にこれが表示されます(/tmp返信で入力した場合)。

> ./foo
+ dir_input
+ echo -n 'Enter targer directory: '
Enter targer directory: + read SRC
/tmp
+ dir_input_check
+ '[' '!' -d /tmp ']'

したがって、SRCは期待どおりに に渡されますdir_input_check。おそらく、この例では何かが抜けている可能性があります。

関連情報