Shell脚本日常积累
文章目录
1.shell脚本调试技巧
#1.Windows下编辑的脚本需要使用dos2unix格式化
dos2unix demo.sh
#2.使用bash命令参数调试
-n:不会执行该脚本,仅查询脚本语法是否有问题,并给出错误提示
-v:在执行脚本时,先将脚本的内容输出到屏幕上,然后执行脚本,如果有错误,也会给出错误提示
-x:将执行的脚本内容及输出显示到屏幕上,这是对调试很有用的参数
export PS4='+${LINENO}'可以在每一行的前面加上内容的行号
#3.使用set命令进行部分脚本调试
set-n:读命令但并不执行。
set-v:显示读取的所有行。
set-x:显示所有命令及其参数。
1.通过set-x命令开启调试功能,而通过set+x关闭调试功能
2.Shell脚本自动化交互式
1.Here Document
格式
命令 << 分隔串(最为常见的为EOF)
字符串1
…
字符串n
分隔串
举例
root@localhost test]# cat test.sh
#! /bin/bash
read -p "enter number:" no
read -p "enter name:" name
echo you have entered $no, $name
#然后我们利用重定向来完成交互的自动化:
[root@localhost test]# ./test.sh <<EOF
>1
>lp
you have entered 1, lp
3.Shell的前后台
| 命令 | 含义 |
|---|---|
| fg( frontground) 前台执行 | Ctrl+z可以挂起前台运行的程序,用fg恢复到前台 |
| bg(background) 后台执行 | 在命令后面加上&它会在后台执行,并将特殊的环境变量$!设置为该任务的进程ID |
4.vi命令(编辑模式)
| 1 | 2 |
|---|---|
| 显示行号 | set nu |
| 跳转到指定的行 | 行数gg |
| 删除指定的行 | 行数dd |
| 删除所有内容 | ggdG |
| 跳转到文本末尾 | G |
| 跳转到当前行末尾 | A |
| 撤销 | u |
| 恢复上一步被撤销的 | ctrl+u |
| 从上往下查 | /字符 |
| 从下往上查 | ?字符 |
4.shell数组
# 数组的定义
array_name=(a b)
# 传递所有的数组值
函数名 ${array_name[@]}
# 查看所有数组的索引
${!array_name[@]}
# 查看
${#array_name[@]}
5.shell数值
# 数值的定义
i=0 #不要有空格
# 数值的计算
let i=i+1
6 awk命令
awk -F [:|] # 正则匹配分割符号
7.字符串的分割
${parameter/parttern/string}
用string来替换第一个匹配的pattern
${parameter//pattern/string}
用string来替换parameter变量中所有匹配的pattern
string="hello,shell,split,test"
array=(${string//,/ })
for var in ${array[@]}
do
echo $var
done
8.常用的linux命令
1.初始化项目权限: umask 007
2.查看xx.so文件属于那个库yum whatprovides xxx.so
3.查看磁盘空间:df -h
4.查看系统版本:cat /etc/*release
| 1 | 2 |
|---|---|
| -z | 检测字符串长度是否为0,为0返回 true。 |
| -n | 检测字符串长度是否不为 0,不为 0 返回 true。 |
| 1 | 2 |
|---|---|
| -i | 逐行记录每一次logger的进程ID |
| -t | 指定标记记录 |
#在/var/log/messages文件中记录为 lp[123456]:hello
logger -i -t lp "hello"
7.shell 脚本中$ , , ,#,$?分别代表什么意思?
| 1 | 2 |
|---|---|
| $* | 这个程式的所有参数,此选项参数可超过9个。 |
| $# | 这个程式的参数个数 |
| $$ | 这个程式的PID(脚本运行的当前进程ID号) |
| $@ | 跟$*类似,但是可以当作数组用 |
#防止$var为空时报错
x"abcd" = x"$var"
9.read
| 1 | 2 |
|---|---|
| -p | 给出提示符。默认不支持"\n"换行,要换行需要特殊处理 |
| -r | 禁止反斜线的转义功能.这意味着"\"会变成文本的一部分 |
read -p -r "Do you want install?"
10.getopt的使用

浙公网安备 33010602011771号