如何在回显它们时转义两个bash变量

时间:2014-04-13 00:20:33

标签: bash echo

我想回复一下这样的文字:

"I'm going to bed at "$'\cc3'"$var"$'\cc'

有时会发生$var变量以数字开头而Bash只是连接它或其他什么。我怎么能逃脱$var所以它被分开但它们之间没有空格?

2 个答案:

答案 0 :(得分:2)

Bash中的ANSI-C Quoting机制使用\cx生成 Control-X 。您对$'\cc3'的使用会生成 Control-C (又名\003\x03)字符,后跟数字3。

表面上看,那么,你想要:

var=01:15
echo "I'm going to bed at "$'\cc'"$var"$'\cc'
Control-C 字符围绕时间的

(尽管你想要那个,但我不清楚)。如果你正在使用Unicode字符U + 0CC3(KANNADA VOWEL SIGN VOCALIC R - ೃ - 如果你有很好的Unicode支持),那么你需要Bash 4.x和$'\ucc3'

如果你正在追求别的东西,你需要用ANSI-C引用来解释你想要回应的内容。

答案 1 :(得分:0)

您可以尝试使用\nnn格式而不是\c发送control-c:

echo $'I\'m going to bed at \003'"$var"$'\003'

(我稍微改变了引用,只是为了减少用于构建字符串的上下文切换次数。)

或者,将control-c字符保存在变量中:

cc=$'\cc'
echo "I'm going to bed at $cc$var$cc"