shell编程相关命令

shell相关:

bash命令:

bash -c "str"	将字符串当做命令处理
bash -n 脚本	检查sh语法
bash -x 脚本	执行并输出执行过程,用来调试

shell运行方式:

(ls ;pwd)		开启一个子bash执行
{ ls;pwd; }		在当前bash执行
{ 命令 }&		加"&"符并行执行,大幅度提高运行效率

declare命令:

作用: 声明变量

declare [选项] 变量名
选项:
	-r 声明或显示只读变量
	-i 将变量定义为整型数
	-a 将变量定义为数组
	-A 将变量定义为关联数组
	-f 显示已定义的所有函数名及其内容
	-F 仅显示已定义的所有函数名
	-x 声明或显示环境变量和函数,相当于export 
	-l 声明变量为小写字母 declare –l var=UPPER
	-u 声明变量为大写字母 declare –u var=lower

exec命令:

作用:与bash一样,执行命令,但不会开启一个子shell来运行命令,而是用当前执行的命令替代当前的shell,命令运行完就退出

例:
exec sleep 5		#执行完睡眠后,退出当前shell

mktemp命令:

作用:用于创建临时目录,必要时可用于脚本中生成临时文件

mktemp [选项]... [TEMPLATE]
选项:
	-d		创建临时目录
	-p /tmp	指定临时文件存放位置,默认在/tmp中
	
说明: 引用一般用变量指定,如:tmpfs=$(mktemp 1.XXX)
例:
mktemp	1.XXX		#“X”是让系统随机生成字符,至少三个

read命令:

作用: 从标准输入获取字符串,并赋值变量

read [选项] ["描述信息"] 变量名
常见选项:
	-p   	指定要显示的提示
	-s   	静默输入,一般用于密码
	-n N 	指定输入的字符长度N
	-d '字符'   输入结束符
	-t N	TIMEOUT为N秒
	-a 	交互式数组赋值

案例

a=qq,11,22

#按分隔符切割赋值
IFS=',' read -r q w e <<< "$a"

echo $q $w $e

action函数:

此命令是一个函数,必须执行/etc/init.d/function来调用,且仅存在于reahat系列

使用方法:
. /etc/init.d/function
例:
action "123" /bin/ture		#会输出成功的字样
action "1233" /bin/false	#输出带有颜色的失败

shift命令:

作用: 用于参数位置偏移,类似于栈的工作逻辑

说明:

当传参时,a b c三个参数,a参数为1号位,a读取后,b位移到1号位,b读取后,c位移到1号位,这样确保每个参数始终是第一个,没有参数时就显示为空

适用:

可用于脚本中,执行传参时只用$1,但是又可以给很多参数,此时就不在需要关注参数总共有多少个,只需要处理参数就可以,因为shift会保证参数始终在第一个位置,能够成功读取到,没有参数后为空(也就是为假,会自动退出)

例:
vim ts.sh
#!/bin/bash
main(){
	while [ $1 ]; do
		echo $1
		shift
	done
}
main $@

bash ts.sh 1 2 3	#此时,会依次打印1,2,3,如果没有shift,会进入死循环,打印1

eval命令:

作用:eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量,该命令对变量进行两次扫描

例:
a=pwd
eval $a 	#先把$a转换成字符串"pwd",再把字符当命令执行

eval pwd		#直接执行,无需置换

trap命令:

作用: 进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作

注意:捕获不了9信号
例:
trap '触发指令' 信号1 信号2 ...

trap '' 信号		#忽略信号的操作
trap '-' 信号		恢复原信号
trap -p 		列出自定义信号
trap 函数 exit		exit信号时,执行函数

ldd命令:

作用: 列出命令执行时所依赖的C函数库

例:
ldd `which pwd`
ldd /bin/ls

image

posted @ 2022-01-26 17:37  suyanhj  阅读(78)  评论(0)    收藏  举报