![](/img/trans.png)
[英]How to execute a command after setting environment by running shell script?
[英]Shell script: Execute command after running “exit” command in the shell script
我有一种情况,我在我的shell脚本中有一个命令,必须在同一个脚本中执行退出命令后执行( 我知道!!这听起来很疯狂! )
我想找到类似的解决方案
#!/bin/sh
ls -l ~/.
exit $?
touch ~/abc.txt
在这里我想要命令touch ~/abc.txt
在exit $?
后执行exit $?
已经运行并且命令touch ~/abc.txt
可以是任何命令。
约束: 1)我无法修改exit $?
以上脚本的一部分。 2)命令必须在exit $?
后才能执行exit $?
命令。
我不确定是否有解决方案,但任何帮助表示赞赏。
典型的方法是设置陷阱:
trap 'touch ~/abc.txt' 0
这将在shell退出时调用touch命令。 在某些shell(例如bash
)中,如果脚本由于信号而终止,则也会执行陷阱,但在其他shell(例如dash
)中则不会。 仅当最后一个命令exit
才有可移植方式来调用该命令。
我不知道你为什么要这样做,但也许尝试这样的事情:将你的脚本包装在另一个中。 在您的父脚本中使用eval或source之类的命令评估您的子脚本,然后从您的子脚本最后一个命令中提取并以相同的方式单独执行它。
我怀疑直接的方式是否可行。
但是可能有一种解决方法:你可以将执行脚本包装在另一个进程中吗? 然后,一旦包装的脚本执行其exit()并从堆栈中删除,您就可以在包装脚本中调用任何所需的内容。
这应该有效,即使OP不想移动出口。
#!/bin/sh
ls -l ~/.
RES=$? #save res for later.
touch ~/abc.txt
exit $RES
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.