据说" " ,' ' ,\逃避特殊人物a.k.a他们的特殊含义,但当我做这样的事情时
date +"Today is \%A"
它不会写"今天是%A"但它写的结果与没有" \"相同。 ="今天是thurstday"。为什么会这样?我以为我理解unix中的字符是如何工作的,但这让我很困惑
我将它输入到终端im on / bin / bash /(那就是$ SHELL输出),奇怪的是,如果\没有在日期中转义char,使用ssh连接到服务器并运行命令有效逃避,例如
ssh name@server.com 'date +"Today is %A"'
答案 0 :(得分:3)
转义特殊字符通常在shell中。例如,在bash中我得到:
Today is \Wednesday
那是因为这里的反斜杠被传递给了日期命令,该命令没有将其视为特殊字符,因此只是将其打印出来。
在bash提示符下键入:
echo $efs
返回一个空行,因为没有名为efs set的变量。但是如果我输入:
echo \$efs
我明白了:
$efs
这意味着定义变量名称的美元符号的特殊含义被删除,而shell只是按原样打印出该字符串。
答案 1 :(得分:0)
在OP的帖子中,双引号正在转义其内容,即反斜杠和百分比。
我用这样的东西去寻求KISS规则:
"Today is `date +%A`"
其中反引号在将date
命令传递给shell后得到响应,+%A
告诉date
如何格式化它的输出。
答案 2 :(得分:0)
在date命令中,反斜杠不会逃避%的特殊含义。
如果要在date命令中打印%A,可以使用以下命令。
$ date +“%% A” %A