美文网首页
Shell入门

Shell入门

作者: 大写的空气 | 来源:发表于2021-08-04 13:55 被阅读0次

    Shell

    #!是一个约定的标记,告诉系统这个脚本需要什么解析器来执行
    创建shell脚本文件可以在终端运行touch test.sh、再打开open test.sh
    可以通过

    chmod +x ./test.sh  //使脚本有执行权限
    ./test.sh
    

    或者sh test.sh, bash test.sh

    变量

    Name=“这是个名字” # =两边不要留下空格
    readonly Name # 如果需要变量为已读变量, 使用readonly
    echo $Name #输出变量
    unset Name #删除变量,后续不会打印
    echo $Name #不会打印出任何信息

    字符串

    可以用单引号或者双引号。单引号里的任何字符都会原样输出,内如再包括一对单引号,可以做字符串拼接,双引号里面可以有变量,也可以有转义字符
    name=“名字”
    greeting = “hello {name} !” #使用双引号拼接 hello 名字 ! greating_1 = ‘hello, ‘name’ !’ #使用单引号拼接 hello 名字 !
    获取字符串长度: ${#name}
    提取字符串: #{string:0:1} #字

    数组

    用括号表示数组或者直接下标赋值
    Array=(1, 2, “3”, ‘d’)
    Array[0]=10
    echo {Array[0]} echo{Array[@]} #输出所有数组
    数组个数: ${#Array[@]}${#Array[*]}
    单个元素长度: ${#Array[0]}

    多行注释

    :<<EOF
    这里的内容会被注释
    EOF
    :<<‘
    还可要这样注释

    参数

    $#传递到脚本的参数个数
    $*以一个单字符串显示所有向脚本传递的参数。
    如"*"用「"」括起来的情况、以"1 2 …n"的形式输出所有参数
    $@*相同,但是使用时加引号,并在引号中返回每个参数。 如"@"用「"」括起来的情况、以"1" "2" … "$n" 的形式输出所有参数

    运算符

    两数之和: val=expr 2 + 2 #加号前后需要有空格
    -eq两个数是否相等
    -ne两个数是否不相等,不相等返回true
    -gt 左边是否大于右边
    -lt左边是否小于右边
    -ge左边是否大于等于右边
    -le左边是否小于等于右边
    -o或运算
    -a与运算
    -z检测字符串长度是否为0.如 [ -z a ] `-n`字符串长度是否不为0 if [a -le b ] then echo “a小于等于b” fi —- 文件检测运算符 `-c`文件是否为字符设备文件 [ -cfile ]
    -d是否为目录
    -r是否可读
    -s文件是否为空,不为空返回true
    -e是否存在

    file=“/var/www/runoob/test.sh”
    if [ -r $file ] then
        echo “文件可读”  #echo后面可以不带双引号输出
    fi
    

    echo

    echo 后面直接字符串输出时,可以不带双引号
    echo -e “ok! \c”
    echo “不换行”
    echo “显示结果定向至文件” > myfile

    条件语句

    if [ $a == $b ]
    then
        echo “a 等于 b”
    elif [ $a -gt $b ]
        echo “a 大于 b”
    fi
    

    如果需要写成一行,用分号隔开
    if [ $a == $b ]; then echo "a 等于 b"; elif [ $a -gt $b ]; echo "a 大于 b" fi

    循环语句

    for loop in 1 2 3 4 5 #也可以使用while, 将本行换成 while(condition)
    do
      echo "value is: $loop"
    done
    

    until循环与while循环相反,一直执行,直到条件为真

    a=0
    until [ ! $a -lt 10 ]
    do
      echo $0
      a=`expr $a + 1`
    done
    

    case语句与c的switch语句类似

    read num
    case $num in
      1)  echo '你选择了1'
      ;;
      2)  echo '你选择了2'
      ;;
      *)  echo '你输入了1、2外的其他值'
      ;;
    esac
    

    跳出循环使用break或continue

    函数

    demoFun(){
      echo '这是个shell函数'
      echo '带参数$1'  #1
    }
    demoFun  #执行函数
    demoFun 1 2 3 4 5   #这里带参数执行函数
    

    重定向

    echo "这些文字" > file      #file文件保存字符串,会覆盖
    echo "这些文字" >> file   #文件末尾保存,不覆盖
    command > /dev/null  # 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null
    

    相关文章

      网友评论

          本文标题:Shell入门

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