ファイルから行を読み取るときの行部分文字列の問題

ファイルから行を読み取るときの行部分文字列の問題

DMGR_PATH.outファイルに次のものが含まれています

/opt/IBM/WebSphere/70/AppServer/profiles/Dmgr01/config CELLNAME
/IBM/websphere/was7.0/profiles/Dmgr01/config CELLNAME

それでは、ファイルを読み込み、次のように行を部分文字列にまとめようとしています。

while IFS= read -r PATH; do

        if [[ $PATH == /IBM/* ]] && [[ "$1" == "XX" ]]; then
        SEARCH_DIR=$PATH
        else if [[ $PATH == /opt/* ]] && [[ "$1" == "YY" ]]; then
        SEARCH_DIR=$PATH
                fi
        fi
done<DMGR_PATH.out

echo "$SEARCH_DIR" | cut -d' ' -f1

しかし、このエラーが表示されます。

a: line 9: cut: No such file or directory

この問題を解決するのに役立つ人はいますか?

答え1

PATHこの変数をスクリプト内のループ変数として使用します。これは、外部ユーティリティ/コマンドを見つけるためにシェルが使用する環境変数でもあります。

cutこれがループ後に外部ユーティリティが見つからない理由です。

別の変数名を使用してください。

通常、私は個人的に、およびHOMEシェル自体からスクリプトにエクスポートされた変数値を使用したい場合を除き、シェルスクリプトで大文字の変数名を使用しない傾向があります。PWDPATH

関連情報