shell - Shell 脚本中 SED 字符串中美元符号 @$VAR 之前的 at 符号有何作用?

标签 shell sed

@$VAR 在 Shell 中是什么意思?在这种情况下我没有使用 @

我在处理 dotfiles 存储库时遇到了以下 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" 行,尤其是使用@

最佳答案

使用 sed 时,不一定要使用 / 字符作为 substitute 操作的分隔符。

因此,@% 字符也是非常好的替代选项:

echo A | sed s/A/B/
echo A | sed s@A@B@
echo A | sed s%A%B%

关于shell - Shell 脚本中 SED 字符串中美元符号 @$VAR 之前的 at 符号有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50525578/

相关文章:

bash - 使用 grep 仅打印上下文

bash - 如何在bash单行中传递两个参数?

android - 如何使用adb shell将文件夹从计算机推送到sdcard

bash - sed 变量太长

regex - 使用正则表达式查找多个文件扩展名的命令

ubuntu - 使用带有正则表达式的 Sed 进行子字符串替换

bash - 通过同时/并发文件传输加速 rsync?

php - 通过 shell_exec 的 Sed 命令未执行

linux - 将垂直文本解析为水平文本

linux - KSH - Linux - ps -ef - 返回代码与找到的进程数