@$VAR
在壳牌中意味着什么?在这种情况下,我无法使用@
。
我在处理dotfiles repo时遇到了以下shell文件
#!/usr/bin/env bash
KEY="$1"
VALUE="$2"
FILE="$3"
touch "$FILE"
if grep -q "$1=" "$FILE"; then
sed "s@$KEY=.*@$KEY=\"$VALUE\"@" -i "$FILE"
else
echo "export $KEY=\"$VALUE\"" >> "$FILE"
fi
我正在努力理解sed "s@$KEY=.*@$KEY=\"$VALUE\"@" -i "$FILE"
行,特别是使用@
。
答案 0 :(得分:2)
使用sed
时,您不一定要使用/
字符作为substitute
操作的分隔符。
因此,@
或%
字符也可以替代使用:
echo A | sed s/A/B/
echo A | sed s@A@B@
echo A | sed s%A%B%
答案 1 :(得分:1)
在命令
中sed "s@$KEY=.*@$KEY=\"$VALUE\"@" -i "$FILE"
字符@
用作s
sed
命令中的分隔符。 s
(替换)命令的一般形式是
s<delim><searchPattern><delim><replaceString><delim>[<flags>]
最常用的&lt; delim&gt;是/
,但有时会使用其他字符,尤其是当&lt; searchPattern&gt;或&lt; replaceString&gt;包含(或可能包含)斜杠。