Shell-Script

Shell 腳本 - 檢查文件是否包含特定的行/字元串

  • February 6, 2022

我的腳本包含:

#### #!/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 行缺少,它總是會報告它不存在。

引用自:https://unix.stackexchange.com/questions/530561