My KornShell(ksh)手册说如果文件存在且-d
表达式是目录,则if [[ -d file ]]
表达式返回true。
因此,如果file
是目录,{{1}}应该返回TRUE。但就我而言,这不是它的工作原理。如果文件存在并且不是目录,则返回TRUE,但是shell的手册说“它是一个目录”。那么,是否有人知道它为什么与它应该是相反的工作?
答案 0 :(得分:3)
工作正常;你的期望是错的。在shell中, 0 返回值为 true ,非零返回值为 false 。
$ true ; echo $?
0
$ false ; echo $?
1
答案 1 :(得分:0)
ksh文件操作员|如果符合以下情况属实:
<强> kshFileOperatorsFunction.ksh 强>
#***Function to demo ksh file Operators.***#
fileOperators(){
echo "Entering fileOperators function."
if [[ ! -a $1 ]]; then
print "file $1 does not exist."
return 1
fi
if [[ -d $1 ]]; then
print -n "$1 is a directory that you may "
if [[ ! -x $1 ]]; then
print -n "not "
fi
print "search."
elif [[ -f $1 ]]; then
print "$1 is a regular file."
else
print "$1 is a special type of file."
fi
if [[ -O $1 ]]; then
print 'you own the file.'
else
print 'you do not own the file.'
fi
if [[ -r $1 ]]; then
print 'you have read permission on the file.'
fi
if [[ -w $1 ]]; then
print 'you have write permission on the file.'
fi
if [[ -x $1 && ! -d $1 ]]; then
print 'you have execute permission on the file.'
fi
echo "Exiting fileOperators function."
}