我需要检查传递给bash脚本的参数是文件夹还是文件。它可能会也可能不会以/
xpath=$(dirname "$1")
如果没有尾随/
,会删除目录名
由于
答案 0 :(得分:1)
给定文件a
和目录t
。
您可以使用命令file
:
$ file t
t: directory
$ file a
a: ASCII text
或-f
(文件)和-d
(dir)标记。
$ [ -f a ] && echo "this is a file"
this is a file
$ [ -f t ] && echo "this is a file"
$
$ [ -d t ] && echo "this is a dir"
this is a dir
$ [ -d a ] && echo "this is a dir"
$
答案 1 :(得分:1)
在路径中使用“test -f”或“test -d”。虽然“dirname”总是返回目录的名称,但永远不会返回文件名,但是它可能会返回文件所在的目录,或者目录所在的目录,具体取决于参数是文件还是目录。 “basename”返回文件名或目录,而不包含它所在的路径。