美文网首页
Shell全面

Shell全面

作者: 周先生的笔记 | 来源:发表于2017-07-11 22:50 被阅读0次

    echo

    • 打印

    变量

    • readOnly 将变量变成只读变量
    • unset 删除变量
    • 单引号里的任何东西都会原样输出
    • 双引号里的可以有变量 也可以进行转意 所以双引号比单引号好用
    • ``这里面可以继续写命令

    字符串 str

    • str :读取字符串的长度

    • str:1:4 :截取字符串第1到4个
    • 课外作业 :字符串的各种处理

    数组

    • 数组名=(值1 值2 ... 值n)
    • array_name[0]=value0
    • ${数组名[下标]}
    • ${array_name[@]} 读取array中的所有元素
    • 数组取长度的方式和字符串一样 也是在前面加上# 但是要注意取得是整个数组的长度 还是单个数组元素的长度

    $0 $1 $2 $3

    • $0为文件名 之后就是我执行这个脚本带的参数
    • $# 传递到脚本的参数个数
    • $* 直接显示所有当成1个参数打印的
    • $@ 有几个参数 就打印几个参数
    • $$ 脚本运行进程ID

    运算 检查是否正确 用[]框起来 去if

    • +-*/%= == != 和java一样 在Mac 中 $((表达式)) 就可以表示 expr
    • 关系运算符 -eq -ne - gt (GREATER THAN) -lt - ge -le
    • 逻辑运算符 || && -o -a
    • 字符串运算符 -z -n = != [str]
    • 文件运算符
    • -f 文件是否存在
    • -x -r -w 文件是否可执行
    • -s 是否为空
    • -e 目录(文件)是否存在
    • -d 是否为目录

    echo printf

    • echo "It is a test" > myfile 显示结果定向至文件
    • printf 主要是格式化用的 类似于C %s\n %-10s %4.2f

    if else

    • if condition
      then
      command1
      command2
      ...
      commandN
      elif condition2
      then
      command2
      else
      command
      fi

    • for var in item1 item2 ... itemN
      do
      command1
      command2
      ...
      commandN
      done

    • case 值 in
      模式1)
      command1
      command2
      ...
      commandN
      ;;
      模式2)
      command1
      command2
      ...
      commandN
      ;;
      esac

    • break continue

    函数

    • func(){}
    • 调用 func 返回结果使用 $?
    • 传递参数
    funWithParam(){
        echo "第一个参数为 $1 !"
        echo "第二个参数为 $2 !"
        echo "第十个参数为 $10 !"
        echo "第十个参数为 ${10} !"
        echo "第十一个参数为 ${11} !"
        echo "参数总数有 $# 个!"
        echo "作为一个字符串输出所有参数 $* !"
    }
    funWithParam 1 2 3 4 5 6 7 8 9 34 73
    

    重定向

    • 输出到文件

    • < 从文件输入
    • 输出追加到文件

    • << 输入追加到文件

    引用外部脚本

    • . filename source filename

    ${} $[] $() $(())

    相关文章

      网友评论

          本文标题:Shell全面

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