Shell script学习笔记

mender Shell script学习笔记 Jun 20, 201316:55:23

  1. 良好的shell script 文件头风格

    1. 功能

    2. 版本信息

    3. 作者与联系方式

    4. 版权宣告

    5. 修改历史

    6. 特殊命令使用绝对路径下达

    7. 环境变量

  2. 执行shell script

    1. source 使用父进程的bash环境来执行

    2. sh script_file 使用新的bash环境来执行

    3. ./script_file 同上

  3. 变量定义

    var=”value”

    var=$other_var

    注意等号两边不能有

  4. shell script中执行外部命令

    $(command)

  5. shell script中进行数值计算

    $((+ - * / %))

  6. 条件判断

    1. 使用test

    2. 使用[ someword ]括号与someword之间有一个空格

      1. []内的每个组件都要用空格来分隔,例如[ 1 == 2 ]==两边也有空格

      2. []内的变量,最好用“”来括起来

      3. []内的常数,最好用''或“”括起来

    3. 常用判断条件

      1. 档案类型判断 test -e filename或者[ -e filename ]

        1. -e 档案是否存在

        2. -f 档案是否存在且是文件(file

        3. -d 档案是否存在且为目录(directory

        4. -b 档案是否存在且为block device

        5. -c 档案是否存在且为character device

        6. -S 档案是否存在且为Socket

        7. -P 档案是否存在且为Pipe

        8. -L 档案是否存在且为Linkfile

      2. 档案权限判断 test -r filename或者[ -r filename ]

        1. -r 可读?

        2. -w 可写?

        3. -x 可执行?

        4. -u SUID

        5. -g SGID

        6. -k Sticky bit

        7. -s 档案存在且非空

      3. 档案之间的比较 test file1 -nt file2或者[ file1 -nt file2 ]

        1. -nt 判断file1是否比file2(newer than)

        2. -ot 判断file1是否比file2(older than)

        3. -ef 判断file1file2是否为同一个档案(相同的inode

      4. 整数之间的判定test n1 -eq n2或者[ n1 -eq n2 ]

        1. -eq equal

        2. -ne not equal

        3. -gt greater than

        4. -lt less than

        5. -ge greater or equal

        6. -le less or equal

      5. 判断字符串的数据

        1. test -z string 空串返回true

        2. test -n string 非空返回true-n可省略

        3. test str1 = str2 相等返回true

        4. test str != str2 不等返回true

      6. 多重判定 test -r filename -a -x filename

        1. -a and,也可以用&&

        2. -o or,也可以用||

        3. ! 取反

  7. Shell script命令行参数

    $0 执行的脚本文件名

    $1 $2 … 文件名后的参数

    $# 参数的个数(不包括$0

    $@ 代表 “$1” “$2” “$3” “$4”...每个变量是独立的(用双引号括起来)

    $* 代表 ”$1c$2c$3c...” 其中c为分隔符,默认为空格

  8. 命令参数偏移shift

    shift N,其中N代表偏移的个数(不包括$0

  9. if条件判断

    if[]之间有一个空格

    1. if [ 条件判断式 ]; then

      当条件判断式成立时,进行的操作;

      fi

    2. if [ 条件判断式 ]; then

      当条件判断式成立时,进行的操作;

      else

      当条件不成立时的操作

      fi

    3. if [ 条件判断式1 ]; then

      当条件判断式1成立时,进行的操作;

      elif [ 条件判断式2 ]; then

      当条件判断式2成立时,进行的操作;

      else

      当以上条件判断式不成立时,进行的操作;

      fi

  10. 利用case...esac判断

    case $变量名称 in

    第一个变量的内容”)

    程序段

    ;;

    第二个变量的内容”)

    程序段

    ;;

    *)

    以上不成立的时候执行

    exit 1

    ;;

    esac

  11. while循环

    while[]之间有一个空格

    while [ condition ]

    do

    条件成立时循环

    done

  12. until 循环

    until []之间有一个空格

    until [ condition ]

    do

    条件成立时结束循环

    done

  13. for循环

    for var in con1 con2 con3 …

    do

    程序段

    done

    或者

    for ((初始值; 限制值; 执行步长))

    do

    程序段

    done

  14. 产生连续的数seq

    例如循环100:

    for var in $(seq 1 100)

    do

    done

  15. 调试sh

    sh [-nvx] scripts.sh

    -n 不执行,只检查语法错误

    -v 执行script前,将script内容输出到屏幕

    -x 将使用到的script现实到屏幕上(debug时很有用)

转载于:https://www.cnblogs.com/mender/p/3146322.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值