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的使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix