Bash 使用另一个变量分配变量
Bash assign variable using another variable
我不太确定标题的措辞,但我想做的是将 username
设置为 $DEV_ENVIRONMENT
、$STAGE_ENVIRONMENT
或 $PROD_ENVIRONMENT
,每一个都在我的属性文件中定义。
我的函数将接受一个参数(DEV
、STAGE
或 PROD
)并根据 $_ENVIRONMENT
.[=25 中定义的边缘检查主机名=]
while IFS=',' read -ra line
do
for i in "${line[@]}"
do
if [ $(hostname) = $i ]
then
username=""_USERNAME
break
fi
done
done <<< "_ENVIRONMENT"
例如,如果我传入 DEV
,那么我希望 username
设置为 $DEV_USERNAME
,并且我希望 while
循环进行搜索$DEV_ENVIRONMENT
中定义的节点,它们都是从我的属性文件中读取的值。
Bash支持indirection expansion,所以你可以这样做:
var=_ENVIRONMENT
username=${!var}
而不是稍微麻烦且有潜在危险的评估:
eval username=$_ENVIRONMENT
因此对于您的代码:
while IFS=',' read -ra line
do
for i in "${line[@]}"
do
if [ $(hostname) = $i ]
then
var=""_USERNAME
username=${!var}
break
fi
done
done <<< "_ENVIRONMENT"
我不太确定标题的措辞,但我想做的是将 username
设置为 $DEV_ENVIRONMENT
、$STAGE_ENVIRONMENT
或 $PROD_ENVIRONMENT
,每一个都在我的属性文件中定义。
我的函数将接受一个参数(DEV
、STAGE
或 PROD
)并根据 $_ENVIRONMENT
.[=25 中定义的边缘检查主机名=]
while IFS=',' read -ra line
do
for i in "${line[@]}"
do
if [ $(hostname) = $i ]
then
username=""_USERNAME
break
fi
done
done <<< "_ENVIRONMENT"
例如,如果我传入 DEV
,那么我希望 username
设置为 $DEV_USERNAME
,并且我希望 while
循环进行搜索$DEV_ENVIRONMENT
中定义的节点,它们都是从我的属性文件中读取的值。
Bash支持indirection expansion,所以你可以这样做:
var=_ENVIRONMENT
username=${!var}
而不是稍微麻烦且有潜在危险的评估:
eval username=$_ENVIRONMENT
因此对于您的代码:
while IFS=',' read -ra line
do
for i in "${line[@]}"
do
if [ $(hostname) = $i ]
then
var=""_USERNAME
username=${!var}
break
fi
done
done <<< "_ENVIRONMENT"