2012-05-14 4 views
0

В моей bash_profile я это:Вызов Perl-замены из скрипта/функции bash?

function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "$a" ;} 

Я хочу запустить ht, чтобы сделать замену инлайн на файл кормили, чтобы удалить HTML комментарий с HTTrack подписи, но когда я запускаю это,

ht file.html 

я получаю:

Can't open : No such file or directory. 

Я подозреваю, что это из-за кавычек вокруг моего $ A, которые препятствуют perl команда подается. Возможно, он префикс " буквально к имени файла или что-то в этом роде, и в целом он становится неправильным именем файла.

Я попытался удалить двойные кавычки вокруг своего $a, но это, похоже, не делает то, что я хочу. Как я могу это решить?

+1

где «$ a» определено? Я не вижу этого в вашем коде. – jwd

+0

Я думал, что '$ a' был магическим синтаксисом bash для аргументов командной строки. Я использовал его в другой функции, чтобы сделать то же самое. –

+1

Я думаю, вы имеете в виду '$ @'. Обычно цитируется, как и у вас, '' $ @ "'. – jwd

ответ

3

Вы должны указать perl, с каким файлом вы пытаетесь работать. Изменение этого:

function ht() { perl -i -pe 's|<!-- Mirrored from (.*?) -->\n||' "[email protected]";} 

Обратите внимание на [email protected] вместо «$ а» в конце. Как указывает @jwd, в большинстве случаев это даже лучше, чем $*.

+0

Это тоже работает! 6 минут до тех пор, пока я не смогу принять. –

+3

Обратите внимание, что '$ @' обычно предпочитается '$ *', так как при цитировании (как '' $ @ "') он будет правильно обрабатывать имена файлов, которые содержат пробелы. – jwd