Я генерирую выражение Sed в скрипте Bash, и у меня возникла следующая проблема.

Я хочу добавить пробел перед каждым появлением abc.

Эта команда работает как положено

echo abc | sed -e "s/abc/ def/"

вывод "def " без кавычек

тогда как эта команда

Q='-e "s/abc/ def/"'
echo abc | sed $Q

выводит sed: -e выражение # 1, char 1: неизвестная команда: `" '

За пределами bash-скрипта все работает.

Я перепробовал все возможные способы кавычек, избегая символов, но не смог понять это. Кто-нибудь может мне помочь?

1 ответ1

0

Используйте массив опций, а не один:

Q=( -e "s/abc/ def/" )
echo abc | sed "${Q[@]}"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .