-
Shell基础
- Shell是什么
- Shell是一个命令行解释器
- Shell还是一个功能相当强大的编程语言,在Shell中可以直接调用linux命令
- 脚本执行的方式
- 赋予执行权限,直接运行
- chmod 755 hello.sh
- ./hello.sh
- 通过Bash调用执行脚本
- bash hello.sh
- 赋予执行权限,直接运行
- 输出重定向
- 命令 > 文件
- 以覆盖的方式,把命令的正确输出输出到指定的文件中
- 命令 >> 文件
- 以追加的方式,把命令的正确输出输出到指定的文件中
- 多命令之间的顺序执行
- 命令1 ; 命令2
- 多个命令顺序执行,命令之间没有任何逻辑联系
- 命令1 && 命令2
- 命令1正确执行,则命令2才会执行
- 命令1执行不正确,则命令2不会执行
- 命令1 || 命令2
- 命令1执行不正确,则命令2才会执行
- 命令1正确执行,则命令2不会执行
- 管道符
- 命令1 | 命令2
- Shell是什么
-
Shell编程之变量
- 变量命令规则
- 变量名必须以字母或下划线打头,名字中间只能由字母,数字和下划线组成
- 在Bash中,变量的默认类型都是字符串型
- 变量的分类
- 用户自定义变量: 变量自定义的
- 环境变量: 和系统操作环境相关的数据变量
- 位置参数变量: 用来向脚本中传递参数的
- 预定义变量: 是Bash中已经定义好的变量,变量不能自定义,变量作用也是固定的
- 定义变量
- 变量名=变量值
- x=5
- name="Jeff Wang"
- 等号左右两边是不允许有空格的,有空格的话,系统会认为这是一个命令
- 如果变量中有空格,一定要括双引号或单引号
- 变量名=变量值
- 变量调用
- echo $变量名
- echo $x
- echo $name
- echo $变量名
- 变量叠加
- x=123
- x="$x"456
- x=${x}789
- 变量查看
- set -u
- 如果设定此选项,调用未声明变量时会报错(默认无任何提示)
- 变量删除
- unset 变量名
- 要注意变量名是没有$的
- unset x
- unset name
- 环境变量
- 环境变量与用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量
- 变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
- 设置环境变量
- export 变量名=变量值
- 或
- 变量名=变量值
- export 变量名
- 查看环境变量
- set
- 查看所有变量
- env
- 查看环境变量
- set
- 常用环境变量
- SHELL: 当前的shell
- TERM: 终端环境
- HISTSIZE: 历史命令条数
- SSH_CLIENT: 当前操作环境是用ssh连接的,这里记录客户端ip
- SSH_TTY: ssh连接时的终端
- PATH环境变量
- PATH变量: 系统查找命令的路径
- echo $PATH
- PATH="$PATH":/root/sh
- 增加PATH变量的值
- PS1环境变量
- PS1变量: 命令提示符设置
- \u: 显示当前用户名
- \w: 显示当前所在目录的完整名称
- []\u[]@[]\h[]:[]\w[]$
- ls
- 换行,命令太长没有输完的情况
- PS1变量: 命令提示符设置
- 位置参数变量
- $n
- $*
- $@
- $#
- 预定义变量
- $?
- $$
- $!
- 可使用man bash来查询位置参数变量和预定义变量的作用
- 接收键盘输入
- read [选项] [变量名]
- 变量命令规则
- 环境变量配置文件
- source 配置文件
- 或
- . 配置文件
- 注意点和配置文件之间有空格,这里点就相当于source
- 修改配置文件后,必须注销重新登录才能生效,使用source命令可以不用重新登录
- 配置文件简介
- /etc/profile
- /etc/profile.d/*.sh
- ~/.bashrc
- /etc/bashrc
- 具体不同的系统文件名可能不同,但应该就是这几个位置
- 你应该可以大致看懂这些shell script