2013-05-31 4 views
1

Я здесь perl noob и хотел запустить это из командной строки моей машины unix.аргумент escaping из командной строки (perl)

./myprog.pl $str1 str2 

Где мне нужно заменить str2 с str1. Проблема в том, что я не знаю, как убежать от $ в аргументе str1. Я попробовал посмотреть здесь и на других сайтах, но я ничего не смог найти. Любая помощь будет принята с благодарностью!

ответ

1

Какая оболочка? Является ли это bourne-shell или производным, то оба из следующих передают программе $str1 и str2.

./myprog.pl '$str1' str2 

./myprog.pl \$str1 str2 

Но вы говорите о "замене". Является ли первый arg предположительным образцом регулярного выражения, который соответствует $str1? Если это так, то вы можете использовать одно из следующих действий:

./myprog.pl '\$str1' str2 

./myprog.pl \\\$str1 str2 

Это ускользает $ для регулярных выражений (путем добавления \), затем убегает \ и $ для оболочки (путем добавления кавычки или дополнительные \ сек).

+0

Да, я использую bash. По какой-то причине это не делает ничего с аргументом, когда я окружаю его с помощью '' или начинаю с \. Он просто выводит $ str1. Я думаю, мой следующий вопрос: как $ str1 получить его значение? –

+0

ха? Строки не получают значений. – ikegami

Смежные вопросы