Bash 脚本在文件结束后循环
Bash script looping after end of file
我的 bash 脚本要求用户提供他们的名字、姓氏、地址和 phone 号码,并将用户输入的这些信息写入格式为 [=14= 的文件中];但是我想重复多次(我实际上想做一些类似 do..while 循环的事情,它至少运行一次并询问用户是否要继续创建帐户,但我看到没有做。 ..虽然 bash 似乎)。因此,当我在终端中执行这个 bash 脚本时,它会询问要创建多少个帐户,我提供所有输入,但它只运行一次。我究竟做错了什么?这是我的脚本。
#!bin/bash
echo "How many accounts are you creating?"
read num
echo "Enter first name"
read fName
echo "Enter last name"
read lName
echo "Enter address"
read add
echo "Enter phone number"
read phn
echo "Enter gender m for male and f for female"
read gender
if [ "$gender" == "m" ]
then
sex="male"
elif [ "$gender" == "f" ]
then
sex="female"
else
echo"Invalid gender. Restart the script and enter a valid gender"
exit 0
fi
for (( i = 0; i<=num; i++))
do
cat > $fName.$lName <<-EOF
Full Name: $fName $lName
Address: $add
Phone number: $phn
Gender: $gender
EOF
done
将您的输入代码放入循环中,或者将该代码包装在一个函数中并在循环中调用该函数。
zerobandwidth 的答案是正确的,但作为替代答案,实际上很容易做您最初想做的事情:
while true; do
# Your account creation code goes here
echo "Create another account (y/n)?"
read another
if [ "$another" != y ]; then
break
fi
done
我的 bash 脚本要求用户提供他们的名字、姓氏、地址和 phone 号码,并将用户输入的这些信息写入格式为 [=14= 的文件中];但是我想重复多次(我实际上想做一些类似 do..while 循环的事情,它至少运行一次并询问用户是否要继续创建帐户,但我看到没有做。 ..虽然 bash 似乎)。因此,当我在终端中执行这个 bash 脚本时,它会询问要创建多少个帐户,我提供所有输入,但它只运行一次。我究竟做错了什么?这是我的脚本。
#!bin/bash
echo "How many accounts are you creating?"
read num
echo "Enter first name"
read fName
echo "Enter last name"
read lName
echo "Enter address"
read add
echo "Enter phone number"
read phn
echo "Enter gender m for male and f for female"
read gender
if [ "$gender" == "m" ]
then
sex="male"
elif [ "$gender" == "f" ]
then
sex="female"
else
echo"Invalid gender. Restart the script and enter a valid gender"
exit 0
fi
for (( i = 0; i<=num; i++))
do
cat > $fName.$lName <<-EOF
Full Name: $fName $lName
Address: $add
Phone number: $phn
Gender: $gender
EOF
done
将您的输入代码放入循环中,或者将该代码包装在一个函数中并在循环中调用该函数。
zerobandwidth 的答案是正确的,但作为替代答案,实际上很容易做您最初想做的事情:
while true; do
# Your account creation code goes here
echo "Create another account (y/n)?"
read another
if [ "$another" != y ]; then
break
fi
done