我正在制作一个脚本,需要循环通过一个文件的列表命名,如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发布于 2012-03-14 01:50:05
使用double paren进行算术:
#!/bin/bash
echo "Base name of machines to bring down:"
read vm
echo "Number of machines:"
read num
let COUNTER=1
while (( COUNTER <= num )); do
echo $COUNTER of $num
let COUNTER=COUNTER+1
done更新
我修复了脚本,所以计数器从1开始,而不是0。@toninoj似乎想从1开始,但在他的脚本中,他从0开始。
发布于 2012-03-14 01:51:02
while循环的第一行将num设置为1,然后在while循环的底部将COUNTER设置为2,因此它永远不会执行超过一次。所以你想要这样的东西:
#!/bin/bash
echo "Base name of machines to bring down:"
read vm
echo "Number of machines:"
read num
COUNTER=1
while [ $COUNTER -le $num ]; do
VBoxManage controlvm $vm$COUNTER poweroff
let COUNTER=COUNTER+1
done发布于 2012-03-14 01:55:43
我认为这可能是一种更好的方法:
#!/bin/bash
for (( i=1 ; $i <= $1 ; i=i+1 ))
do
VBoxManage controlvm $2$i
done$1是传递给脚本的第一个参数。第二个参数是$2。现在,您可以使用以下命令调用脚本
myscript vlaue vm其中,当到达$1时,脚本将停止,$2是您的vm参数。
我尝试过使用echo命令
l1zard@Marvin:~/Downloads> ./test.sh 3 maria
VBoxManage controlvm maria0
VBoxManage controlvm maria1
VBoxManage controlvm maria2
VBoxManage controlvm maria3https://stackoverflow.com/questions/9689230
复制相似问题