我正在查看一些ksh代碼並遇到了一條我認爲不可行的線。在測試代碼時,它確實有效,但我不知道爲什麼。Kornshell中的反斜線
如果很重要,它將在AIX 5.3系統上運行。
的代碼行是:
scriptname=$(\basename $0)
我沒想到它會因爲basename
命令前反斜槓的工作,但是當我測試的scriptname
變量,它有正確的值。
我沒有在命令行上一些進一步的測試:
$ echo $(\echo test)
test
$ echo $(\echo \test)
test
$ echo $(\e\c\h\o \test)
test
$ echo `\e\c\h\o \test`
test
$ echo $(\echo "\test")
est
我想它的命令託換之外,它還是像我以爲沒有工作,它會:
$ \echo \testi\ng
testing
$ \echo "\testi\ng"
esti
g
最後一個是唯一對我有意義的人。
Kornshell只是忽略反斜槓,或者只是將它們轉換爲反斜槓前面的字符?我認爲在命令行中的任何位置放置一個\n
將是一個換行符,但顯然只有在引號內或\\n
。
有人可以解釋一下ksh在命令行中使用反斜槓嗎?
無論哪種方式,我認爲更好的方式來寫我最初的質疑會是命令:的
scriptname=$(basename $0)
代替:
scriptname=$(\basename $0)
什麼關係呢?
在此先感謝!
有趣。反斜槓有什麼缺點,除了看起來很奇怪嗎? – BrianH 2010-11-11 18:58:59
沒有人知道,除了讓那些不熟悉的人感到困惑。 – Darron 2010-11-12 16:56:48