首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >while循环正在为变量赋值,我稍后将使用它,但不确定

while循环正在为变量赋值,我稍后将使用它,但不确定
EN

Stack Overflow用户
提问于 2019-07-13 04:43:43
回答 1查看 27关注 0票数 0
代码语言:javascript
复制
read -p "Enter the new Kernel Destination: " kernel_new
n=1

while [ "$word" != "no" ]
do
read -p "Enter the Hostname: " hostname_$n
read -p "Enter the SID: " sid_$n
read -p "Enter the destination of Kernel: " kernel_old_$n
read -p "Want to add new entry please give yes or else give no: " word
n=$(( n+1 ))
done

echo "Kernel Upgrade is starting now"

while [ $n != 0 ]
do
echo "Upgrading ${hostname_[$n]} "
n=$(( n-1 ))
done

执行:

我想要显示"Upgrading hostname“,在用户提示期间,将在我的第一个while循环中分配hostname。假设hostname_1 =abcdef,hostname_2=qwerty

然后我希望输出结果为

代码语言:javascript
复制
Upgrading abcdef
Upgrading qwerty

请救命!

代码语言:javascript
复制
while [ $n != 0 ]
do
echo "Upgrading ${hostname_[$n]} "
n=$(( n-1 ))
done

我想要显示"Upgrading hostname“,在用户提示期间,将在我的第一个while循环中分配hostname。所以假设

代码语言:javascript
复制
hostname_1 =abcdef, hostname_2=qwerty

然后我希望输出结果为

代码语言:javascript
复制
Upgrading abcdef
Upgrading qwerty

请救命!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-13 15:06:50

这些变量在子while中的while循环中捕获,在外部不可用。但是您可以尝试使用关联数组。下面是一个简单的例子,说明它是如何工作的:

代码语言:javascript
复制
#!/bin/bash

# declare an associative array
declare -A dict
n=0
while true; do
    read -r -p "Hostname: " dict['hostname_'$n]
    read -r -p "retry? (Yn): " answer
    [[ "$answer" == "n" ]] && break
    (( n++ ))
done 

# loop over all entries in reverse order
for i in $(seq $n -1 0); do
    printf "%s\n" "${dict['hostname_'$i]}"
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57013824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档