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_