五,脚本执行方式
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