用SHELL编程问题,如何判断文件类型

2024年11月22日 14:58
有3个网友回答
网友(1):

应该是bash吧:脚本的写法是这样的:file_name=xxxxxxxif [ -d $file_name ]
then
echo "directory"
else
echo "not a directory"
fi 下面是全部参数,里面就有你需要的:-a file exists.
-b file exists and is a block special file.
-c file exists and is a character special file.
-d file exists and is a directory.
-e file exists (just the same as -a).
-f file exists and is a regular file.
-g file exists and has its setgid(2) bit set.
-G file exists and has the same group ID as this process.
-k file exists and has its sticky bit set.
-L file exists and is a symbolic link.
-n string length is not zero.
-o Named option is set on.
-O file exists and is owned by the user ID of this process.
-p file exists and is a first in, first out (FIFO) special file or
named pipe.
-r file exists and is readable by the current process.
-s file exists and has a size greater than zero.
-S file exists and is a socket.
-t file descriptor number fildes is open and associated with a
terminal device.
-u file exists and has its setuid(2) bit set.
-w file exists and is writable by the current process.
-x file exists and is executable by the current process.
-z string length is zero.

网友(2):

我只记得一点:
-b 文件存在且为块文件
-f 是文件
-d 是目录
-L 是链接

好像一共有b c d e f g h k p r s t u w O G L S N等等.记不得了,百度一下多的是
用的话,直接用if 判断
if [ -f filename ];then
........

OK,差不多这个意思

网友(3):

楼上说的对,你应该使用case语句