shell编程
需求
为.sh
文件添加默认参数,默认为true
。
当参数为true
时执行操作;当参数为false
时不做处理。
涉及的知识点
参数的获取
shell
使用一种默认的获取参数的方法:通过$n
来获取参数。其中n
是一个数字,$1
就代表第一个参数。
值得注意的是shell
中将$0
定义为脚本名
。
比如:
#!/bin/bash echo '脚本名是:'$0 echo '第一参数的名称是:'$1
执行结果:
同时,这种获取参数的方式也使用于方法中获取参数,也就是说获取方法的第一个参数也是用$1
这种方式。
if else语法
基本的语法跟我们已经学过的任何一门语言都差不多:
if [ xxx ] then xxx else xxx fi
这里比较要注意的就是,if的判断条件由[]
进行包围,并且,两个括号与条件之间,必须要有空格
;
另一个比较值得注意的就是,由于没有用于包围程序块的{}
来标示if
语句的结束,所以就需要使用fi
来表示if语句的结束。
设置默认值
shell
中允许多种设置默认值的方式,这里我只介绍我实现的一种:
var=${a:-b}
这种写法的含义就是,当变量a
的值为null
或空串
的时候,将b
作为他的值,及var=b
。
实现需求
基本的语法都介绍完了,下面就可以开始实现我们的需求了。
这里还有一个需要注意的是,我们最后的实现会通过函数的调用的形式来实现,所以,中间还会涉及到向函数传参的问题。
这里我就给出在函数调用的前提下实现需求的例子。
#!/bin/bash # 程序入口函数 main() { # 获取传入函数的第一个参数,默认为true temp=${1:-true} if [ $temp = true ] then echo '我在这里做了一些事情!' fi } # 执行main函数,并将命令的第一个参数传给方法 main $1
可以看到我在这里成功实现了我们想要的效果,但是还要一点问题。
虽然我们可以通过输入参数使程序什么也不做,但是也可以通过输入一些其他字符达到效果。所以我们还要完善一下:
#!/bin/bash # 程序入口函数 main() { temp=${1:-true} if [ $temp == true ] then echo '我在这里做了一些事情!' fi } # 执行main函数,并将命令的第一个参数传给方法 if [[ ! -n $1 || $1 == true || $1 == false ]] then main $1 else echo '参数未知错误!' fi
可以看到,我们在执行main
函数之前对它加了一些限制。只有在没有参数,或者参数为true
和false
的时候才会执行函数。
这里要注意的一点就是,当在if语句
中添加多个条件的时候,一组[]
变成了两组[[]]
。
总结
当我们接触一门新的语言的时候,有一些是这门语言独有的特性,而这些特性正是我们需要重点注意的地方。