如何修复在while循环中不起作用的计数

时间:2019-06-11 00:45:54

标签: bash shell

我一直在尝试解决一个问题,该问题是我的循环数应该减少,但是没有任何效果。我需要创建一个while循环,该循环将读取给定的时间。例如,如果在终端中输入“ files.txt -a 3”,则需要循环以重复“输入字符串:” 3次。在下面的代码中,我只能使其循环一次。我不确定在哪里放置柜台,我可以说我把它放在各处。在if语句内部,for循环内部以及while循环内部,但似乎没有任何作用。用户将放入的数字保留在$ count变量中。

#!/bin/bash
if ["$1" = "-a" ]
then
  read in user String and save into file
fi

while [ "$count" > 0 ]
do
  for i in $count
  do

   if [ "-a" ]
   then
   read -p "Enter in a string: " userSTR
   echo userSTR >> files.txt
   count=$(($count - 1))
   fi

done
done

1 个答案:

答案 0 :(得分:0)

对于条件表达式,您需要使用[[ expression ]],例如这将循环四次:

count=4
while [[ $count > 0 ]] ; do
    echo "$count"
    count=$(( $count - 1 ))
done

要从命令行参数获取计数,可以使用以下命令替换上面的分配count=4,以解析命令行参数:

if [ $# -lt 2 ] ; then
    echo "Usage: $0 -a [count]"
    exit 1
fi
if [ "$1" = "-a" ] ; then
    shift
    count=$1
fi