Que tal usar uma função que irá ler a partir de um prompt e, em seguida, executar literalmente o que você digita?
function f { read -p"> " c; $c; }
Em uso, será parecido com:
$ f
> echo $var
$var
Estou escrevendo um pouco de Ruby para usar na linha de comando, mas o shell está interferindo demais - existe uma maneira de desativar a interpolação para toda a linha? Eu sei que posso escapar de certos personagens, mas estou procurando uma proibição geral.
Por exemplo, eu tenho o conjunto de shell para não adicionar ao histórico se ele começa com um espaço em branco.
Qualquer ajuda com isso é muito apreciada.
Eu não acho que fiquei claro, minhas desculpas. Um exemplo:
ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")'
O shell não interpola esses números porque ele está entre aspas simples, mas às vezes o código precisará incluir aspas. Ruby é bastante útil nisso, você pode usar outros caracteres especiais para mudar as aspas, mas então tudo começa a ficar um pouco bagunçado, e não será tão simples como acima. O que eu gostaria é algo mais como:
%% ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")'
Onde %%
mudaria de interpolação pelo shell para o resto da linha.
Ao criar sua linha de comando, continue a usar as aspas simples, mas escape (use) qualquer aspas simples internas e as substitua por aspas simples sem terminar as citações da string como um todo.