Bootstrap

第二节 shell脚本基础(5)(6)(7)

五,脚本执行方式
1,在当前环境下运行
#测试脚本内存
vim lee.sh
#!/bin/bash
cat
# 方法1
. lee.sh &
ps f
#输出
	PID TTY		STAT	TIME COMMAND
  17398 pts/2	Ss		0:00 -bash
  17919 pts/2	T		0:00 \_ cat
  17920 pts/2	R+		0:00 \_ ps f
#方法2
source lee.sh &
ps f
	PID TTY		STAT	TIME COMMAND
  17398 pts/2	Ss		0:00 -bash
  17919 pts/2	T		0:00 \_ cat
  17920 pts/s	R+		0:00 \_ ps f

[!note]

这两种执行方式都不需要脚本本身有执行权限

2,在指定环境中运行
vim lee.sh
#在Vim中
#!/bin/bash
cat

方法1.
sh lee.sh &
ps f
	PID TTY		STAT	TIME COMMAND
  17398 pts/2	Ss		0:00 -bash
  17908 pts/2	T		0:00 \_ /bin/bash /root/lee.sh
  17891 pts/2	T		0:00 |	\_cat
  17892 pts/2	R+		0:00 \_ ps f
六,脚本调试

脚本在执行过程中如果出现问题,单从脚本的执行报错中找问题困难大,如果执行时显示执行过程这样就可以快速定位脚本问题所在

vim lee.sh
#在vim中
#!/bin/bash
hostname
echo $USER
date
cat			#命令应为cal显示系统日历,用这个手残错误为例
pwd
#:wq


sh lee.sh
#直接执行看脚本效果
timinglee.easylee.org
root
Sun Apr 7 04:27:05 AM EDT 2024

sh -x lee.sh
#显示执行过程效果
+ hostname
timinglee.eastlee.org
+ echo root
root
+ date
Sun Apr 7 04:27:27 AM EDT 2024
+cat

[!note]

在显示执行过程时,+行表示命令,不带+的行表示命令的输出

七,命令退出值
1,什么是退出值
  • 在UNIX或者Linux中,每个命令都会返回一个退出状态码

  • 退出状态码是一个整数,其有效范围为0~255

  • 通常情况下,成功的命令返回0,而不成功的命令返回非0值.非0值通常都被解释成一个错误码

  • 行为良好的UNIX命令,程序的工具都会返回0作为退出码来表示成功

2,查看和更改退出值
a)查看退出值
ls /mnt/lee
#系统弹出
ls cannot access '/mnt/lee':No such filer or directory
#结束

eco $?
#系统弹出
2
#结束

touch /mnt/lee
ls /mnt/lee
#系统弹出
/mnt/lee
#结束
echo $?
#系统弹出
0
b)修改脚本退出值
#未指定退出值
vim lee.sh
# 在vim
#!/bin/bash
date
exit
#:wq

sh lee.sh
#系统弹出
Sun Apr 7 04:32:50 AM EDT 2024
#结束

echo $?
#系统弹出
0
#结束

#指定退出值
vim lee.sh
#系统弹出
#!/bin/bash
date
exit 66
#结束

sh lee.sh
#系统弹出
Sun Apr 7 04:32:50 AM EDT 2024
#结束

echo $?
#系统弹出
66
;