私のスクリプトには次のものがあります。
#### #!/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
export
bashrcの12行目にファイルがないため、常にファイルが存在しないと報告します。