条件比较语句
下面有个例子,将上面说的几个点综合了一下:
#!/bin/bash
echo "Starting program at $(date)" # Date will be substituted
echo "Running program $0 with $# arguments with pid $$"
for file in "$@"; do
grep foobar "$file" > /dev/null 2> /dev/null
# When pattern is not found, grep has exit status 1
# We redirect STDOUT and STDERR to a null register since we do not care about them
if [[ $? -ne 0 ]]; then
echo "File $file does not have any foobar, adding one"
echo "# foobar" >> "$file"
fi
done
首先 $(date)
打印出时间,然后遍历脚本的输入参数,其实应该是各个文件,每一次循环都将相关文件全目录赋给$file
变量,然后用grep命令在当前文件里搜索关键字foobar
。后面这段命令:> /dev/null 2> /dev/null
的意思是将grep命令的标准输入,和标准错误输出都重新定位到/dev/null设备上,其实就是舍弃,不要的意思。/dev/null是一种特殊的linux虚拟设备,专门用来倾倒不需要的垃圾数据。再后面的命令就是如果grep没有找到相关关键字,就将这个关键字添加到当前的文件里。
说了这么多,才要说到正题:条件判断语句,其实很简单。上面的例子中,两个中括号里面就是条件判断。其实单个中括号也可以作为判断语句的容器,但是可能会和其他有冲突,所以为了减少错误,用双中括号更能降低出错的机会。