【发布时间】:2012-03-30 03:51:21
【问题描述】:
我正在制作一个脚本,该脚本需要遍历名为的文件列表 如file1、file2、file3,都同名,后缀号递增 根据用户输入。
所以我制作了这个脚本,但是当我输入数字 3 时,她只循环 在 file1 上,它停止了。 为什么?
如何根据用户输入循环遍历 n 个文件?
这是我的脚本:
#!/bin/bash
echo "Base name of machines to bring down:"
read vm
echo "Number of machines:"
read num
COUNTER=0
while [ $COUNTER -lt $num ]; do
num=$[$COUNTER+1]
VBoxManage controlvm $vm$num poweroff
let COUNTER=COUNTER+1
done
【问题讨论】:
-
您将计数器递增两次。这是故意的吗?
-
你需要检查这一行:
num=$[$COUNTER+1] -
这是什么?
num=$[$COUNTER+1] -
顺便说一句:您是否尝试使用 -p(提示)读取:
read -p "Number of machines:" num? -
@Niklas,@bpgergo ,我只需要第一个增量中的 num 变量。我不想增加 COUNTER 变量。我只需要在 $vm$num 部分使用 counter+1 值,这是要在命令中使用的机器的名称。由于 COUNTER 从 0 开始,而 vm-s 从 vm1 开始,所以我需要通过将 COUNTER 增加 1 来获取 vm1 中的 1 部分。
标签: linux bash shell loops while-loop