先来回顾一下上文的问题:
如果电脑上已经有了/usr/directory文件夹。就不需要再去创建文件夹了!
这是一个全新的需求,我们的思路并不是一条道走到黑,现在我们需要走向一条正确的道路。
if命令就闪亮出场了。
#! /bin/bash
cd /usr/
if [ -e directory ]; then
echo "directory is already exist"
else
echo "creat directory"
mkdir directory
cd directory/
mkdir code
mkdir util
mkdir test
fi
(-e directory 判断当前目录下是否存在directory文件)
利用
if commands then
command
else
command
fi
就可以完成判断工作了。
你看看现在咱们可以有选择的去执行一些步骤了。只是现在场景有摇身一变了。可能会有一些特殊的需求,这个新场景就比如说:
- 如果电脑上已经有了/usr/directory文件夹。就不需要再去创建文件夹了!
- 可能有些人的电脑上只需要在/usr/directory目录先创建code文件夹
- 有些人的电脑上只需要在/usr/directory目录先创建unit文件夹
- 有些人需要所有的文件夹
这可怎么做呢?不仅需要判断,还需要再根据不同的条件去创建文件夹,比如
条件 | 步骤 |
---|---|
等于0 | 创建code文件夹 |
等于1 | 创建unit文件夹 |
其他输入 | 创建全部的文件夹 |
没事,路要一步一步走,饭要一口一口吃。
咱们先搞定怎么能传入不同的条件:
shell 脚本允许我们启动脚本时传入参数,例如 参数1 ,在shell脚本内部里就是$1。参数2,在脚本内部就是$2。 两个参数之间用空格分开就好了。
现在我们已经解决了从外部引入条件的步骤,紧接着就是用另一种形式的判断去解决掉问题就可以了。
#! /bin/bash
cd /usr/
if [ -e directory ]; then
echo "directory is already exist"
else
echo "creat directory"
mkdir directory
cd directory/
if [ $1 -eq 0 ]; then
mkdir code
elif [ $1 -eq 1 ];then
mkdir util
else
mkdir code
mkdir util
mkdir test
fi
fi
显而易见咱们通过在if里边有套接了一层if就完美解决了这个问题。
这个新加入的if格式是这样的
if command1
then
commands
elif command2
then
more commands
else
another commands
fi
讲到这里可能你觉得if命令就已经结束了,其实不然,if好像是一把枪,那if中的判断语句就是子弹,如果只给了枪没有子弹的话,那这支枪又有什么作用呢?
下一节:条件判断。给你提供充足的子弹。