2015-10-15 72 views
0

这是说,“”,“”,\逃生又名它们的特殊含义的特殊字符,但是当我做这样的事情在Unix外壳转义特殊字符

date +"Today is \%A" 

它不会写“今天是% A“,但它写的结果与之前没有”\“=”今天是thurstday“。这是为什么发生?我想我明白如何逃脱字符在UNIX中的作品,但这个混淆了我不少

林打字成依赖/ bin/bash的终端IM /(那是什么$ SHELL输出),奇怪的是,如果\不无法逃脱日期字符,使用ssh连接到服务器并运行那里逃脱如

ssh [email protected] 'date +"Today is %A"' 
+0

这太宽泛了。你使用什么语言? – ergonaut

+0

只是在使用linux(Mint) – Darlyn

+0

这个终端输入这个 日期+“今天是%A” 给我“今天是星期四”。那样有用吗? – Simon

回答

3

转义特殊字符的工作一般是在shell的命令。例如,在bash我得到:

Today is \Wednesday 

这是因为反斜杠在这里被传递到没有看到它作为一个特殊字符date命令,因此只是打印出来。

在bash提示符打字:

echo $efs 

因为没有称为EFS设置变量返回一个空行。但是,如果我输入:

echo \$efs 

我得到:

$efs 

这意味着美元符号定义一个变量名的特殊含义被带走和外壳刚刚打印的串出原样。

+0

以及如何在日期内输出“今天是%A”?这可能是荒谬的,但我想了解事情是如何工作的 – Darlyn

+0

嗯,你不会。 date命令以各种格式返回日期。看到“男人约会”(这些日子过得怎么样,我曾经得到一个粗暴的RTFM!向我大喊)。无论如何,为了得到你想要的东西,你可以通过将echo'd字符串与日期输出相结合来构建一个字符串,这就是shell的强大功能,将命令组合起来基本上可以创建一个新的字符串。享受您的知识追求! –

0

在OP的发布中,双引号是转义其内容,即反斜杠和百分比。

我去了这样的事情的KISS法则:

"Today is `date +%A`" 

它传递给后壳后引号得到date命令的响应和+%A告诉date如何格式化它的输出。

0

在日期命令中,反斜杠不会转义%的特殊含义。

如果要在date命令中打印%A,可以使用以下命令。

$ date +“%% A” %A