美文网首页
sh脚本语法

sh脚本语法

作者: dpplh | 来源:发表于2017-10-23 14:11 被阅读49次

    开头#!/bin/sh

    符号#!用来告诉系统后面的参数是用来执行该文件的程序。

    要使编写脚本可执行 编译chmod +x filename 这样才能用./filename来运行

    特殊符号

    通配符 *

    通过find命令查找.sh结尾的文件,使用*代替文件名

    find . -name '*.sh'
    

    {}

    用来生成序列

    $ echo {1..5}
    1 2 3 4 5
    

    单引号、双引号、不加引号、反引号

    单引号

    什么内容就显示什么内容

    $ echo '$PWD hostname'
    $PWD hostname
    

    双引号

    对里面的特殊符号进行解析

    $ echo "$PWD hostname"
    /Users/lvhan/Desktop/dirName/subDir hostname
    

    不加引号

    echo $PWD hostname
    /Users/lvhan/Desktop/dirName/subDir hostname
    

    反引号

    先运行,把结果留下 与$()作用相同

    单小括号、双小括号

    ()

    表达式

    文件表达式

    if [ -f file ] 文件存在
    if [ -d ...  ] 目录存在
    if [ -s file ] 文件存在且非空
    if [ -r file ] 文件存在且可读
    if [ -w file ] 文件存在且可写
    if [ -x file ] 文件存在且可执行
    

    整数变量表达式

    if [ int1 -eq int2 ] int1 == int2
    if [ int1 -ne int2 ] int1 != int2
    if [ int1 -ge int2 ] int1 >= int2
    if [ int1 -gt int2 ] int1 >  int2
    if [ int1 -le int2 ] int1 <= int2
    if [ int1 -lt int2 ] int1 <  int2
    

    字符串变量表达式

    if [ $string1 = $string2 ]  string1 == string2 // 字符串允许使用赋值号做等号
    if [ $string1 != $string2]  string1 != string2
    if [ -n $string ] string非空(非0), 返回0(true)
    if [ -z $string ] string为空
    if [ $string] 类似-n
    

    cat 命令

    1. cat filename => 一次显示整个文件
    2. cat > filename => 创建一个文件
    3. cat file1 file2 > file => 将file1 file2 合并成file
    4. cat file1 >> file2 => 将file1的内容写到file2
    参数:
    -n 或 --number 由 1 开始对所有输出的行数编号
    -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
    -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -v 或 --show-nonprinting
    

    find 命令

    find pathName -name "文件名" -exec ... \;
    

    字符串包含判断

    方法一:利用grep查找
    
    strA="Hello world"
    strB="llo"
    result=$(echo $strA | grep "${strB}")
    if [[ "$result" != "" ]];then
        echo "包含"
    else
        echo "不包含"
    fi
    
    方法二:利用字符串运算符
    
    strA="Hello world"
    strB="llo"
    if [[ $strA =~ $strB ]];then
        echo "包含"
    else
        echo "不包含"
    fi
    
    方法三:利用通配符
    
    strA="Hello world"
    strB="llo"
    if [[ $strA == *$strB* ]];then
        echo "包含"
    else
        echo "不包含"
    fi
    

    未完待续...持续更新

    相关文章

      网友评论

          本文标题:sh脚本语法

          本文链接:https://www.haomeiwen.com/subject/pncauxtx.html