lx86 发表于 2018-8-26 12:12:46

学习笔记-5.2 shell编程1

  shell编程
  编译器 解释器
  编程语言: 机器语言 汇编语言 高级语言
  静态语言:编译型语言
  强类型(变量)
  事先转换成可执行格式
  C C++ JAVA C#
  动态语言:解释型语言
  弱类型
  边解释边执行
  PHP SHELL Python perl
  bash:(解释器本身是静态语言开发的)
  面向对象 JAVA Python perl C++
  面向过程 shell C
  变量类型:事先定义数据的存储格式和长度
  字符
  数值
  整型
  浮点型:11.23 1.123*10^1
  布尔型
  逻辑: 1 + 1 > 2
  逻辑运算:与 或 非 异或(相同为0)
  1:真
  0:假
  整型:8bit:256
  16bit:
  32bit:
  64bit
  变量:内存空间 命名
  内存:编址的存储单元
  进程:
  1+100
  编程能力:
  脚本编程
  shell:弱类型编程语言
  强:变量在使用前,必须事先声明,甚至还需初始化:
  NULL:
  弱: 变量用时声明:甚至不区别类型
  变量赋值:VAR_NAME = VALUE
  bash变量类型:
  环境变量
  本地变量(局部变量)
  位置变量
  特殊变量
  本地变量:
  (set 省略)VARNAME = VALUE:作用域为整个bash进程
  局部变量:
  local VALUENAME = VALUE,作用域为当前代码段
  环境变量:作用域为当前shell进程及其子进程
  export VARNAME = VALUE
  VARNAME = VALUE
  export VARNAME
  “导出”
  位置变量:
  $1,$2,...
  特殊变量:
  $?:上一个命令的执行状态返回值
  程序执行,可能有两类返回值:
  程序执行结果
  程序状态返回代码(0-255)
  0:正确
  1-255:错误执行,系统预留:1,2,127
  每执行一个命令,后面紧跟一个执行echo $? ,状态返回代码
  输出重定向:
  > >> 2> 2>> &>
  /dev/null 软件设备,bit bucket,数据黑洞
  撤掉变量
  unset VARNAME 撤销变量
  查看当前shell中的变量:
  set
  包括环境变量和本地变量
  查看当前shell中的环境变量
  printenv
  env
  export
  # ANIMALS = pig
  # ANIMALS = $ANIMALS:goat
  # A = 2
  # B = 2
  # C = $A + $B
  # echo $C
  2+3
  脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
  1 nano fist.sh #!(shebang指定程序的魔数)
  #!/bin/bash(第一行)
  #注释行,
  cat /etc/fstab
  ls /var
  bash first.sh 不用给执行权限(好像也没指定路径)
  脚本在执行时会启动一个子shell进程(pstree)
  命令行中启动的脚本会继承当前shell环境变量
  系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量
  bash:
  引用变量: $(VARNAME),括号有时可省略
  双引号弱引用,其内的字符串做变量替换
  单引号强引用,其内的字符串不做变量替换
  练习:写一个脚本,完成以下任务
  1 添加5个用户,user1,...,user5
  2 每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd
  命令的执行结果信息
  3 每个用户添加完成后,都要显示用户某某已经成功添加
  练习:写一个脚本,完成以下任务
  1 使用一个变量保存一个用户名:
  2 删除此变量中的用户,且一并删除其家目录
  3 显示"用户删除完成"类的信息

页: [1]
查看完整版本: 学习笔记-5.2 shell编程1