shell脚本笔记总结一

来源:互联网 发布:淘宝网臭豆腐4号碗 编辑:程序博客网 时间:2024/06/05 07:02

1.shell脚本的执行方法

当shell脚本以非交互的方式运行时,它会先查找环境变量ENV,该变量指定了一个环境文件(通常是.bashrc),然后从该环境变量文件开始执行,当读取了ENV文件后,SHELL才开始执行shell脚本中的内容。
shell脚本的执行通常可以采用以下三种方法:

  • bash script-name 或者 sh script-name
  • path/script-name 或者 ./script-name(当前路径下执行)
  • source script-name 或 . script-name(注意符号“.”与 script-name之间有空格)

第一种方法是脚本文件本身没有可执行权限时,通常使用的方法;
第二种方法需要先将脚本文件的权限改为可执行,然后通过脚本路径就可以直接执行;
第三中方法是在当前shell环境中直接执行,而不是新创建一个子shell,当我们需要在一个脚本中使用另一个脚本中的变量的时候就使用第三种方法

2.bash的变量类型

根据变量的生效范围等标准可分为:
本地变量:生效范围为当前shell进程,对当前shell之外的其他shell进程包括当前shell 的子shell 进程均无效;
环境变量:生效范围为当前shell进程及子进程;
局部变量:生效范围为当前shell进程中某代码片段(通常指函数);
位置变量:$1, $2, …来表示,用于让脚本在脚本代码 中调用通过命令行传递给它的参数
特殊变量:
这里写图片描述
本地变量
变量赋值:name=‘value’

  • 可以使用引用value:
    (1) 可以是直接字串; name=“root”
    (2) 变量引用:name=”$USER”
    (3) 命令引用:name=COMMAND name=$(COMMAND)
  • 变量引用:${name} $name
    “”:弱引用,其中的变量引用会被替换为变量值
    ”:强引用,其中的变量引用不会被替换为变量值,而保 持原字符串
  • 显示已定义的所有变量:set
  • 删除变量:unset name

环境变量

  • 变量声明、赋值:
    export name=VALUE
    declare -x name=VALUE
  • 变量引用:name,{name}
  • 显示所有环境变量: env printenv export declare -x
  • 删除变量: unset name

条件选择if语句

  • 单分支
    if 判断条件;then
            条件为真的分支
    fi

  • 双分支

      if 判断条件; then

           条件为真的分支代码
    else
           条件为假的分支代码
    fi

  • 多分支
    if 判断条件1; then
          条件为真的分支代码
    elif 判断条件2; then
          条件为真的分支代码
    elif 判断条件3; then
          条件为真的分支代码
    else
          以上条件都为假的分支代码
    fi

条件判断:case语句

case 变量引用 in             
PAT1)
      分支1
      ;;
PAT2)
      分支2
      ;;

*)
      默认分支
       ;;
esac

for循环

  • for    变量名    in    列表;do

         循环体
done

  • 执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执 行一次循环体; 直到列表中的元素耗尽,循环结束

while循环

while CONDITION; do
      循环体
done

  • CONDITION:循环控制条件;进入循环之前,先做一次判 断;每一次循环之后会再次做判断;条件为“true”,则执行 一次循环;直到条件测试状态为“false”终止循环
  • 进入条件:CONDITION为true
  • 出条件:CONDITION为false

until循环

  • until CONDITION; do
          循环体
    done
  • 进入条件: CONDITION 为false
  • 退出条件: CONDITION 为true

循环控制语句continue

用于循环体中
continue [N]:提前结束第N层的本轮循环,而直接进入下一 轮判断;最内层为第1层
while CONDTIITON1; do
      CMD1
       …
if CONDITION2; then
      continue
fi
CMDN

done


脚本练习题

1.求0到50以内偶数的和。
这里写图片描述

2.打印九九乘法表
这里写图片描述

3.打印国际象棋盘
这里写图片描述
这里写图片描述

4.打印等腰三角形
这里写图片描述

5.这里写图片描述

原创粉丝点击