本文给大家介绍了一些Shell小知识,供参考学习

    一、if 条件语句 

    格式:
    if 条件表达式
    then #当条件为真时执行以下语句
    命令列表
    else #为假时执行以下语句
    命令列表
    fi
    if 语句也可以嵌套使用
    if 条件表达式1
    then
    if 条件表达式2
    then
    命令列表
    else
    if 条件表达式3
    then
    命令列表
    else
    命令列表
    fi
    fi
    else
    命令列表
    fi
    你可以进行多层嵌套 一个if语句一定要跟一个fi 表示该层条件结束否则会造成语法错误结合前面讲的 举例如下:
    这里先讲一个条件语句中用到的命令test 表示测试test后面的条件是否为真
    if test -f "$1"
    then
    lpr $1
    else
    if test -d "$1"
    then
    cd $1
    lpr $1
    else
    echo "$1不是文件或目录"
    fi
    fi
    以上的例子还可以改成如下所示
    if test -f "$1"
    then
    lpr $1
    elif test -d "$1" #elif 同else if
    then
    (cd $1;lpr $1)
    else
    echo "$1不是文件或目录"
    fi
    以上的例子不知您是否看懂是什么意思吗?
    假如我们现在将这个例子保存为prfile
    chmod +x prfile
    执行刚才的程序
    ./prfile aaa
    这个例子是检查你的输入的参数是否是一个文件 如果是就打印 如果是一个目录 先转目录再打印 如果即不是文件也不是目录给出提示
    二、多重条件测试语句case

    格式:
    case 字串 in
    模式) 命令列表;;
    模式) 命令列表;;
    ....
    esac
    多重条件语句是以case 开始以esac结束 中间可以有多个条件列表 功能是测试字串和和里面的模式有没有匹配的,有就执行里面的命令列表 模式也可以是*号 表示任意字串,每个模式里面的最后要心;;双引号结束,否则会发生语法错误。
    现举例如下:
    case $1 in
    *.c)
    cc $1
    ;;
    *.txt)
    lpr $1
    ;;
    *)
    echo "未知的类型"
    esac
    假如将以上内容保存在文件abc中
    chmod +x abc
    执行 ./abc a.c   将会对文件a.c进行编译
    执行 ./abc readme.txt 将会把文件通过打印机
    假如我将以上内容改一下,你是否会知道它的执行结果?
    case $1 in
    *)
    cc $1
    ;;
    *.txt)
    lpr $1
    ;;
    *.c)
    echo "未知的类型"
    esac


原文:Shell常见知识(3)
标 签:  shell  s