Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在shell中检查调用脚本_Linux_Shell - Fatal编程技术网

Linux 如何在shell中检查调用脚本

Linux 如何在shell中检查调用脚本,linux,shell,Linux,Shell,我现在有两个shell脚本,分别是a.sh和b.sh,它们都是独立运行的,并且有退出代码检查,如: echo "Executing: $COMMAND" eval $COMMAND exitCode=$? exit $exitCode 对于特定场景,我需要从a.sh内部调用b.sh。 我需要检查是否从a.sh调用了b.sh,然后在执行b.sh之后控制应该传递给a.sh,否则遵循b.sh的默认行为 在shell脚本中是否有任何方法可以获得调用脚本?这样我就可以实现逻辑: if ( calling

我现在有两个shell脚本,分别是a.sh和b.sh,它们都是独立运行的,并且有退出代码检查,如:

echo "Executing: $COMMAND"
eval $COMMAND
exitCode=$?
exit $exitCode
对于特定场景,我需要从a.sh内部调用b.sh。 我需要检查是否从a.sh调用了b.sh,然后在执行b.sh之后控制应该传递给a.sh,否则遵循b.sh的默认行为

在shell脚本中是否有任何方法可以获得调用脚本?这样我就可以实现逻辑:

if ( calling script == a.sh)
then do not exit
else
  follow the default behavior

您可以跟踪文件中的某些变量

set VAR = A.SH //at the beginning of a.sh
并在其他位置将其设置为其他值

如果您使用的是bash.com,则可以通过$0获取当前文件名

echo $0

您可以要求arg检查脚本b.sh中的if语句。脚本a.sh使用该参数执行脚本b.sh

脚本a

sh ./b.sh script_a
脚本b

if($1 == script_a) 
//$1 means first argument, which you typed in script a 
....
....
在Linux上,可以使用获取某些进程的命令行参数。shell脚本的父进程id存储在$PPID中

假设a.sh如下所示:

#! /bin/bash
./b.sh
你这样称呼它:

./a.sh
可以使用以下b.sh获取父脚本名称:

#! /bin/bash
cut -d $'\0' -f 2 /proc/$PPID/cmdline
您使用的是bash还是其他shell?