Shell脚本基础知识
一、基础知识
1.1 Bash基本特性
快捷键
按键 | 功能 |
---|---|
Ctrl+A | 光标调至命令行最前 |
Ctrl+E | 光标调至命令行最后 |
Ctrl+C | 停止正在执行的命令 |
Ctrl+L | 计算机屏幕清屏 |
Tab键可补齐命令
上下键可查命令历史
命令别名
alias命令可查看可使用的命令别名,也可进一步自定义别名
如 ll =‘ls -l’
输出的重定向
把本来输出到显示器的内容重定向到需要的位置
命令 | 作用 |
---|---|
> | 正确的信息重定向 |
>> | 正确的信息重定向追加 |
2> | 错误的信息重定向 |
2>> | 错误的信息重定向追加 |
&> | 既要正确的信息又要错误的信息重定向 |
&> | 既要正确的信息又要错误的信息重定向追加 |
管道
一个竖杠 | 是通过管道,可以将多条命令组合,将前一条命令的输出结果管道传递给第二条命令,作为它的输入信息。
1.2 脚本执行的多种方式
1.需要为文件赋予可执行的权限
绝对路径执行 / 相对路径执行
2.不需要文件有可执行的权限
sh 脚本文件名
source 脚本文件名 #不会启动子进程,可通过pstree查看进程树
二、变量
变量名=变量值
unset可取消变量值
注意事项
1.=两边不能有空格,不要使用关键字做变量名,如ls、cd等
2.如果变量名已存在则覆盖之前的变量值
3.变量名称由字母/数字/下划线组成,不能以数字开始
2.1 环境变量
变量名通常大写,由操作系统维护
2.2位置变量
bash内置变量,存储脚本执行时的参数
使用$n表示,n为数字序列号,如$1、$2、…、${10}、${11}、…
2.3 预定义变量
用来保存脚本程序的执行信息,可以直接使用,但不能直接为这些变量赋值
变量名 | 含义 |
---|---|
$0 | 当前所在的进程或脚本名 |
$$ | 当前运行进程的PID号 |
$? | 命令执行后的返回状态,0表示正常,1或其他表示异常 |
$# | 已加载的位置变量的个数 |
$* | 所有位置变量的值 |
$RANDOM 是系统生成一个随机数
2.4 区分三种界定符(引号)
双引号"":允许扩展,以$引用其他变量
单引号’’:不允许扩展,$视为普通字符
反引号``:将命令的执行输出作为变量值,$()与反引号等效
2.5 read标准输入取值
read从键盘读入变量值完成赋值
格式:read [ -p “提示信息”] 变量名
-p可选,-t可指定超时秒数,-s设置是否在终端显示输入的内容
2.6 变量的作用范围
局部变量只在当前shell环境中有效,无法在子shell环境中使用
全局变量在当前shell及子shell环境中均有效,用export 变量名=变量值,定义全局变量
2.7 计算及echo回显
可使用 $[] 或 $(()) 表达式进行整数运算替换
可使用++、+=、/=、%=等与java相同的简写表达式
bc计算器支持小数计算和比较运算,可使用管道 | 将表达式传递给bc计算器,如echo “scale=2;2.3*5.6” | bc, scale=n 可以约束小数位
-n 选项:不换行
-e选项:支持扩展属性 如echo -e “\033[32mOK\033[0m” #绿色显示OK
2.8 数组
存储多个数据的集合就是数组
test=(11 22 33) #定义数组
echo ${test[0]} #调用数组的值 11
三、基础命令
- tr -s 删除多余重复的字串:echo “a b c” | tr -s " " #删除多余的空格
- cut过滤数据:cut -d: -f1 /etc #以冒号为分隔,过滤第一列