私のスクリプトには次のものがあります。

私のスクリプトには次のものがあります。

私のスクリプトには次のものがあります。

#### #!/usr/bin/sh
FILE="/home/steven/.bash_profile"
STRING="export PATH="$PATH:/opt/mssql-tools/bin""

if [ -z $(grep "$STRING" "$FILE") ]; then

        echo 'the string is exist' >&2
else

        echo 'the string doesnt exist' >&2
fi

私のファイルには以下が含まれます。

#### # .bash_profile

 # Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc
fi

#### # User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

なぜ常に存在を返すのですか?

ベストアンサー1

STRING変数でおよびをエスケープする必要があります$"それ以外の場合は拡張されます$PATH

次のように宣言してください。

 STRING="export PATH=\"\$PATH:/opt/mssql-tools/bin\""

@muruがコメントしたように、次のようにしてみてください。

if  grep -q "$STRING" "$FILE" ; then
         echo 'the string exists' ; 
else
         echo 'the string does not exist' ; 
fi

exportbashrcの12行目にファイルがないため、常にファイルが存在しないと報告します。

おすすめ記事