missing之bash脚本编写-3 条件比较语句

条件比较语句

下面有个例子,将上面说的几个点综合了一下:

#!/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没有找到相关关键字,就将这个关键字添加到当前的文件里。

说了这么多,才要说到正题:条件判断语句,其实很简单。上面的例子中,两个中括号里面就是条件判断。其实单个中括号也可以作为判断语句的容器,但是可能会和其他有冲突,所以为了减少错误,用双中括号更能降低出错的机会。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章