我的目标是创建一个可由正在执行的任何测试脚本调用或引用的变量列表。系统上有很多测试脚本,但变量复杂且难以理解。对于每种类型的设置,同一事物有不同的变量名称。我想重命名变量并修改测试脚本以引用相同的变量,以便更容易理解。
以下是如何在脚本中定义一个变量的示例:
RightNumberOfDevices=$( lspci -n | egrep --count "8086:[[xdigitx]][xxdigit]][[:xdigit:]][[:xdigit:]]" )
在另一个脚本中,我会看到:
TotalNumberOfDevices=$( lspci -n | egrep --count "8086:[[xdigitx]][xxdigit]][[:xdigit:]][[:xdigit:]]" )
我希望能够在某种启动脚本中声明 TotalNumberOfDevices,以便可以在整个环境中访问该变量中的值。
这是我试图实现的代码:
ethcounter=$(ifconfig -a | egrep --count "eth[0-9]+")
ethindex0=$((ethcounter-1))
declare -a eth #This declares that "eth" is an array variable
for ((i=0; i<=ethindex0; i++))
do
eth[$i]=$(ifconfig eth$i | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' )
echo "eth[$i]" = "${eth[$i]}"
set ${eth[$i]}
done
我想做的就是存储每个以太网设备的 IP 地址并使它们可供其他脚本使用。
答案1
全局变量与局部变量仅在 shell 内有区别(相对于 shell 函数)。
导出变量与非导出变量的区别仅在于 shell 的子进程(不仅是子 shell)(只有导出变量才成为子进程的环境变量)。