我正在查看一些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