假设我的 .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)$