Bash 跨多个脚本使用同一变量

Bash 跨多个脚本使用同一变量,bash,shell,Bash,Shell,跨多个顺序调用的脚本使用相同的bash变量(不是环境变量)的最佳实践是什么?是否应该在每个脚本或函数中定义此变量,以使它们在原子上可重用 例如,假设我有一个脚本,它生成了一个functions.sh脚本,其中包含许多较小的可重用函数 #脚本#u 1 DIR=“$(cd“$(dirname“${BASH_SOURCE[0]}”)”&&pwd) country=“${1}” . ${DIR}/functions.sh 功能1 职能2${country} #函数.sh DIR=“$(cd“$(dirn

跨多个顺序调用的脚本使用相同的bash变量(不是环境变量)的最佳实践是什么?是否应该在每个脚本或函数中定义此变量,以使它们在原子上可重用

例如,假设我有一个脚本,它生成了一个
functions.sh
脚本,其中包含许多较小的可重用函数

#脚本#u 1
DIR=“$(cd“$(dirname“${BASH_SOURCE[0]}”)”&&pwd)
country=“${1}”
. ${DIR}/functions.sh
功能1
职能2${country}
#函数.sh
DIR=“$(cd“$(dirname“${BASH_SOURCE[0]}”)”&&pwd)
函数_1(){
echo“国家是${country}”
}
函数_2(){
本地国家=“${1}”
如果[${country^^}==“UK”];则
回声“鱼和薯条”
其他的
echo“尝试当地食物”
fi
}
我的问题是:
${country}
变量是否应该在
functions.sh
源文件中的每个原子函数中本地定义

调用这些函数时,
${country}
已在初始脚本中定义,因此我不必将其作为参数传递。我认为这些脚本中的每一个都不应该依赖于之前定义的某个变量,但是应该通过参数向它们提供它们所需的所有信息,以便它们可以很容易地重用


此外,是否应将其定义为
国家
国家

这与在任何其他语言中使用全局变量相同。您应该尽量避免使用它们,参数通常更好。全大写变量通常是为环境变量保留的。@Barmar总之,您的意思是:保持变量为小写(因为它不是环境变量)最好在每个函数中定义变量并将其作为参数传递,而不是依赖于脚本运行环境中已经存在的变量。它太容易使用
PATH=/PATH/to/file;DIR=$(dirname“$PATH”)
然后您想知道为什么脚本突然发出“dirname:notfound”