在" hostmenu"下面的函数我希望连接字符串$ site和$ system用于标识将用于构建下一个菜单的数组。功能" sitemenu"和" sysmenu"设置设置$ sitesystem所需的两个必需变量。所有数组都在任何函数之外定义。我遇到的问题是" $ sitesystem"当select选择使用它时,它会变空。 " $ sitesystem的回显显示了位置参数" site"" system" (例如:" siteasysb")而不是数组中定义的字符串" $ siteasysb"。如何选择成功使用" $ sitesystem"变量?
#!/bin/bash
main ()
{
sitemenu
sysmenu
hostmenu
}
## functions omitted which set $site and $system ##
hostmenu ()
{
PS3="Please choose a $site $system device to connect to.."
clear
sitesystem=("$site""$system")
echo $sitesystem
select opt in "${sitesystem[@]}"
do
case $opt in
## Omitted selected host section ##
;;
"Return to previous system menu")
sysmenu
;;
"Return to site menu")
sitemenu
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
}
siteoptions=("sitea" "siteb" "Quit")
sysoptions=("sysa" "sysb" "Return to site menu" "Quit")
siteasysa=("a" "b" "Return to previous system menu" "Return to site menu" "Quit")
siteasysb=("a" "b" "Return to previous system menu" "Return to site menu" "Quit")
`main "$@"
答案 0 :(得分:0)
要将变量的值用作另一个变量的名称,请将变量名称开头的!
设置为indirect。所以:
由于您希望整个数组都包含[@]
,因此您需要将其包含在$sitesystem
sitesystem="$site$system[@]"
select opt in "${!sitesystem}"