我想知道如何确定脚本文件的执行或来源。
例如,
# Shell script filename build.sh
if [ "x$0" = "xbash" ]; then
echo "I am sourced by Bash"
else
echo "I am executed by Bash"
fi
如果我输入
source build.sh
它将输出我来自Bash 。
如果我输入
./build.sh
它将输出我由Bash执行。
目前,我使用$ 0来执行此操作。有更好的主意吗?
受到Tripeee的启发,我找到了一个更好的方法:
#!/bin/bash
if [ "x$(awk -F/ '{print $NF}' <<< $0)" = 'xcdruntime' ]; then
echo Try to source me, not execute me.
else
cd /opt/www/app/pepsi/protected/runtime
fi
答案 0 :(得分:10)
如果由其他脚本提供,则无效。我会走另一条路;
test "X$(basename -- "$0")" = "Xbuild.sh" || echo Being sourced
更新:为两个字符串添加了X前缀。
也更新:在basename
调用中添加了双短划线。