在目标 shell 脚本中,如何知道它从哪个符号链接链接的文件?



环境:Android 和 shell。 这些文件如下:

link1 ->target.sh
link2 ->target.sh
link3 ->target.sh

现在在目标 shell 脚本中,如何知道当前哪个符号链接文件链接到它? 当从不同的链接文件调用目标 scrip 时,它需要调用不同的函数。 多谢!

第一个位置参数$0包含已执行的文件。

示例 target.sh

#!/bin/sh
echo $0

然后

$ ./target.sh
./target.sh
$ link1
link1

请注意,$0包含完整路径。如果您只需要可执行文件名称,则可以使用basename删除路径:

#!/bin/sh
EXECUTABLE=$(basename "$0")
case "${EXECUTABLE}" in
link1)
echo "Called as link1"
# function1
;;
link2)
echo "Called as link2"
# function2
;;
link3)
echo "Called as link3"
# function3 
;;
target.sh)
echo "Called as target.sh"
;;
*)
echo "Some error message"
;;
esac

最新更新