好吧,我目前是新手shell脚本编写者。我对其他编程语言有基本的了解,比如Javascript for HTML,JScript,VB.NET和C ++。 (C ++不是那么多,只是把我的脚浸入水中)。最近,我最近的项目一直试图尽可能多地学习Bash shell脚本。当前的问题是了解状态错误代码,以及检查某些参数是否包含目录或是否存在目录。我正在阅读一本书,包括教程和复习题。不幸的是,没有答案的关键,甚至没有提示。
以上是我必须做的,到目前为止我认为我做的第一个,如果没有请,请纠正我,或指导我正确的方向。因为我在给出样品时学得最好,我想我会请求帮助。
if [ $? ]; then
echo "You must supply at least one parameter"
exit 1
fi
#The above is the part I am pretty sure is correct.
if [ $? -d $directory "$1" ]; then
echo "$directory is not a directory"
exit 2
fi
#The above was self written. I am almost positive it is wrong.
if [ $? -lt 2 ]; then
set "$1" .pwd
fi
#the above was given to me from the book as a reference point to start (tutorial)
答案 0 :(得分:2)
$?
是您执行的命令的返回码。也许您认为它是当前脚本的返回代码。在任何情况下,它都没有做你认为它正在做的事情。
我的所有示例都假设您的命令运行如下:script [source] [destination]
如果没有给出参数,则显示错误消息:
if [ ! "$#" ]; then
echo "please supply a parameter"
exit 1
fi
如果source不是目录,则显示错误
if [ ! -d "$1" ]; then
echo "$1 is not a directory"
exit 2
fi
如果目标不存在或不是目录
,则显示错误if [ ! -d "$2" ]; then
echo "$2 doesn't exist or isn't a directory"
exit 3
fi