我有一个shell脚本,它接受目录名称或目录命令行的路径,并创建该目录。如果我想确定参数是有效路径还是只有目录名,我该如何实现?好像传递了一个目录名,然后该目录将在脚本执行的位置创建,如果是一个路径,那么将在该路径上创建该目录。所以这个区别对我的剧本来说是必要的。
谢谢和问候。
答案 0 :(得分:1)
某些程序以不同的方式处理带有'/'的参数。考虑:
./foo x
./foo x/
但是,如果适用的话,我会鼓励使用“标签”/“选项”,因为上面的内容是一个非常微妙的细节。 (想想用户!)。
./foo -p x
./foo --path=x
./foo x
快乐的编码。
答案 1 :(得分:1)
我不确定你的意思,也不相信你需要做出这样的区分:mkdir -- "$1"
创建一个目录,无论你如何呈现它的名称。
要测试第一个参数是否是没有路径组件的简单目录名称(例如foo
但不是foo/bar
或/abso/lute
),请测试它是否包含/
:
case "$1" in
*/*) echo "contains multiple path components";;
*) echo "no slash, just a base name";;
esac
要测试第一个参数是相对路径还是绝对路径,请测试它是否以/
开头:
case "$1" in
/*) echo "absolute";;
*) echo "relative";;
esac
无论您是在考虑文件还是目录,这都适用。
答案 2 :(得分:0)
dir=$(dirname -- "$1")
if test "$dir" != '.'; then
echo 'Path'
else
echo 'Directory'
fi