Я пишу немного на 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
Когда вы создаете свою командную строку, продолжайте использовать одинарные кавычки, но избегайте (используйте \
) любые внутренние одинарные кавычки и заменят их одинарными кавычками, не завершая цитирование строки в целом.