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命令(编辑模式)

12
显示行号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

5.shell中常见的字符串操作

12
-z检测字符串长度是否为0,为0返回 true。
-n检测字符串长度是否不为 0,不为 0 返回 true。

6.logger的用法

12
-i逐行记录每一次logger的进程ID
-t指定标记记录
#在/var/log/messages文件中记录为 lp[123456]:hello
logger -i -t lp "hello"

7.shell 脚本中$ , , ,#,$?分别代表什么意思?

12
$*这个程式的所有参数,此选项参数可超过9个。
$#这个程式的参数个数
$$这个程式的PID(脚本运行的当前进程ID号)
$@跟$*类似,但是可以当作数组用

8.shell脚本中字符串变量前加个x

#防止$var为空时报错
x"abcd" = x"$var"

9.read

12
-p给出提示符。默认不支持"\n"换行,要换行需要特殊处理
-r禁止反斜线的转义功能.这意味着"\"会变成文本的一部分
read -p -r "Do you want install?"

10.getopt的使用


posted @   阿无oxo  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示