что делает знак at перед знаком доллара @ $ VAR в строке SED в сценарии Shell? - PullRequest
0 голосов
/ 25 мая 2018

Что означает @$VAR в Shell?Я не использую @ в этом случае.

Я столкнулся со следующим файлом оболочки при работе с моим репозиторием dotfiles

#!/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", особенно использование @.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

В команде

sed "s@$KEY=.*@$KEY=\"$VALUE\"@" -i "$FILE"

символ @ используется в качестве разделителя в команде s sed.Общая форма команды s (замена) -

s<delim><searchPattern><delim><replaceString><delim>[<flags>]

, где наиболее часто используемым является /, но иногда используются другие символы, особенно когда или содержит (или может содержать) косые черты.

0 голосов
/ 25 мая 2018

При использовании sed необязательно использовать символ / в качестве разделителя для действия substitute.

Таким образом, символы @ или % также идеально подходятопции, которые будут использоваться вместо:

echo A | sed s/A/B/
echo A | sed s@A@B@
echo A | sed s%A%B%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...