Shell-Script
Shell 腳本 - 檢查文件是否包含特定的行/字元串
我的腳本包含:
#### #!/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
為什麼它總是返回存在?
我們應該轉義 STRING 變數中的
$
and"
。否則會擴大$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 行缺少,它總是會報告它不存在。