내 스크립트에는 다음이 포함됩니다.
#### #!/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번째 줄에 파일이 없기 때문에 항상 파일이 존재하지 않는다고 보고합니다.