2015-10-15 92 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