Назад | Перейти на главную страницу

Как остановить интерполяцию оболочки?

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

Например, у меня установлена ​​оболочка, не добавляющая в историю, если она начинается с пробела.

Любая помощь с этим очень ценится.


Я не думаю, что ясно выразился, мои извинения. Пример:

ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")'

Оболочка не будет интерполировать эти числа $, потому что она заключена в одинарные кавычки, но иногда в коде необходимо включать кавычки. Ruby очень полезен в этом, вы можете использовать другие специальные символы для изменения кавычек, но тогда все начинает становиться немного запутанным, и это будет не так просто, как выше. Я бы хотел чего-то большего:

%% ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")'

куда %% отключит интерполяцию оболочкой для остальной части строки.

Как насчет использования функции, которая будет читать из приглашения, а затем выполнять буквально то, что вы вводите?

function f { read -p"> " c; $c; }

При использовании это будет выглядеть так:

$ f
> echo $var
$var

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