Bash

如何停止外殼插值?

  • November 15, 2019

我正在編寫一些 Ruby 以在命令行上使用,但是 shell 干擾太多 - 有沒有辦法關閉整行的插值?我知道我可以逃脫某些角色,但我正在尋找一攬子禁令。

例如,如果 shell 以空格開頭,我將其設置為不添加到歷史記錄中。

對此的任何幫助都非常感謝。


我想我沒有說清楚,我很抱歉。一個例子:

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

shell 不會插入這些 $ 數字,因為它用單引號括起來,但有時程式碼需要包含引號。Ruby 在這方面非常有幫助,您可以使用其他特殊字元來更改引號,但是這一切都開始變得有點混亂,並且不會像上面那樣簡單。我想要的是更像:

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

在哪裡%%會關閉 shell 對其餘行的插值。

使用一個從提示中讀取然後按字面意思執行您輸入的內容的函式怎麼樣?

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

在使用中,它看起來像:

$ f
> echo $var
$var

創建命令行時,繼續使用單引號,但轉義(使用\)任何內部單引號並將其替換為單引號,而不會結束整個字元串的引用。

引用自:https://serverfault.com/questions/417759