在输入/bash 中自动替换特殊字符?

在输入/bash 中自动替换特殊字符?

假设我的 .bashrc 中有以下内容

test1() { echo $@; }

我想要在我的终端中运行下面的内容

test1 1 and (2 and 3)

应该输出

1 and (2 and 3)

但由于括号,这只会给我一个语法错误。除了使用,还有其他方法可以解决这个问题吗?

test1 "1 and (2 and 3)"

? 也许首先替换所有特殊字符(如括号)?

答案1

您可以使用反斜杠删除括号的特殊含义:

test1 1 and \(2 and 3\)

或者引用括号里的文字:

test1 1 and "(2 and 3)"

答案2

test1“1 和(2 和 3)”

... 将为您提供预期的输出。

参考: http://www.tldp.org/LDP/abs/html/abs-guide.html -> “子壳”

bash 中未加引号的括号内的内容作为子 shell 启动,与当前运行的 shell 并行。

答案3

您的目标并不完全清楚。鉴于此,这可能是您想要的:

(shell prompt)$ test1() { printf "data? "; read -r tdata && printf "%s\n" "$tdata"; }
(shell prompt)$ 
(shell prompt)$ test1
data? 1 and (2 and 3)           (You type the part in bold.)
1 and (2 and 3)                 (Your test1 function repeats your input back to you.)
(shell prompt)$ 

相关内容