我正在编写一些 Ruby 代码用于命令行,但 shell 干扰太多 - 有没有办法关闭整行的插值?我知道我可以转义某些字符,但我希望全面禁止。
例如,我已将 shell 设置为如果以空格开头则不将其添加到历史记录中。
任何帮助我都非常感谢。
我觉得我没有表达清楚,抱歉。举个例子:
ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")'
shell 不会插入这些 $ 数字,因为它被括在单引号中,但有时代码需要包含引号。Ruby 在这方面非常有用,您可以使用其他特殊字符来更改引号,但随后一切都开始变得有点混乱,而且不会像上面那样简单。我想要的是更像这样的东西:
%% ruby -pi -e 'gsub(/(find)(this)/, "#{$1} #{$2}")'
哪里%%
会关闭 shell 对行剩余部分的插值。
答案1
如何使用一个函数来读取提示然后逐字执行您输入的内容?
function f { read -p"> " c; $c; }
在使用中,它看起来像:
$ f
> echo $var
$var
答案2
当您创建命令行时,继续使用单引号,但转义(使用\
)任何内部单引号并将其替换为单引号,而不会结束整个字符串的引用。