Как я могу передать переменную / аргумент в этот скрипт sed, который я тестирую? - PullRequest
1 голос
/ 08 июля 2011

Я хочу иметь возможность передать $ 1 в эту команду, которую я выполняю, но я думаю, что она пробует ее буквально, а не использует значение $ 1:

find / test / $ 1 -type f -name '* .html' | xargs sed -i -r 's / href = "http://$1//href="//g'

1 Ответ

4 голосов
/ 08 июля 2011

Да;одинарные кавычки предотвращают расширение переменной.Вам нужно использовать двойные кавычки, , но , потому что вы также используете их буквально, нам нужно переключать стили цитирования в середине потока.И мне неясно, как вы ожидали, что косые черты будут работать одновременно как разделители и данные регулярного выражения:

find "/test/$1" -type f -name '*.html' | xargs sed -i -r 's,href="http://'"$1"'/,href="/,g'

Вам также необходимо следить за тем, чтобы $1 не содержал специальных символов регулярного выражения, иесли он может содержать запятую, вы, возможно, захотите использовать что-то еще в качестве разделителя регулярных выражений.

...