总是对exec命令中的-a参数不理解,写了个测试小程序,也没有体现出-a参数的作用。
[root@r ~]# cat test.sh
#!/bin/bash
exec -a /roo /root/newtest hell
[root@r ~]# cat newtest
#!/bin/bash
echo $#
echo "para 0"
echo $0
执行结果
[root@r ~]# ./test.sh
1
para 0
/root/newtest
参数0仍然是“/root/newtest,不是/roo
找了一篇文章 shell中exec解析 https://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580749.html
这篇文章中,说明
shell script:
有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。
新产生一个shell然后再执行scripts的方法是在scripts文件开头加入以下语句
#!/bin/sh
去掉newtest的#!/bin/bash,输出符合预期:
[root@r ~]# ./test.sh
1
para 0
/roo