Shell 脚本避免多次重复 source

 

 

https://kodango.com/avoid-repeated-source-in-shell

${!_sourced_}是间接引用,这个执行没问题,source 会报错 bad substitution 

_sourced_="__sourced_$$__"

echo "Flag variable $_sourced_=${!_sourced_}"

if [ -z "${!_sourced_}" ]; then
    eval "$_sourced_=1"
    echo "It is the first time to source script"
else
    echo "The script have been sourced"
fi

 

改为下面就可以正常source

_sourced_="__sourced_$$__"

sourced=`eval echo '$'"$_sourced_"`

echo "Flag variable $_sourced_=${sourced}"

if [ -z "${sourced}" ]; then
    eval "$_sourced_=1"
    echo "It is the first time to source script"
else
    echo "The script have been sourced"
fi

 

或者

_sourced_="__sourced_$$__"

eval sourced=\$$_sourced_

echo "Flag variable $_sourced_=${sourced}"

if [ -z "${sourced}" ]; then
    eval "$_sourced_=1"
    echo "It is the first time to source script"
else
    echo "The script have been sourced"
fi

_sourced_="__sourced_$$__"
echo $_sourced_

 

 

https://stackoverflow.com/questions/2683279/how-to-detect-if-a-script-is-being-sourced

 

posted @ 2022-04-26 22:20  sinferwu  阅读(192)  评论(0编辑  收藏  举报