Bash:while loop-Error"没有这样的文件或目录"

时间:2016-08-13 21:51:12

标签: bash error-handling while-loop sh

我有一些代码不起作用。它说,"没有这样的文件或目录",并在第27行崩溃:

while [ $i  < $amount]

但我不知道为什么。任何人吗?

#!/bin/bash
#WWGEN Aleandro

small=$(echo "abcdefghijklmnopqrstuvwxyz")
big=$(echo "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
C=$(echo "\"")
D=$(echo '!')
E=$(echo ",.@#$%^&*()][{};:?-_+=")
F=$(echo "0123456789")

characters=$(echo $small$big$C$D$E$F)

while getopts ":cl:p:" opt; do
  case "$opt" in
    c) characters=$(echo $big$C$D$E$F);;
    l) length=$OPTARG ;;
    p) amount=$OPTARG ;;
  esac
done
shift $(( OPTIND - 1 ))

i=0

echo "amount: $amount"
echo "length: $length"

while [ $i  < $amount]

do

echo  "test"
echo $characters | sed 's/\(.\)/\1\n/g ' | sed 's/^$//g'| shuf -n $length | paste -sd ''

i=$[$i+1]

done

输出:

bash wwgen.sh -l 6 -p 5
amount: 5
length: 6
wwgen.sh: line 27: [: 0: binary operator expected

通缉输出: 5个随机生成的密码,长度为6,如下所示。

bash wwgen.sh -l 6 -p 5
amount: 5
length: 6
69:AY
O7H;=
64]Z
]^NL!
(&NW5

1 个答案:

答案 0 :(得分:1)

while [ $i < $aantal ]

尝试做一些涉及从文件$ aantal获取输入的内容,这解释了消息。

对于劣质测试用途:

while [ $i -lt $aantal ]

证明我的观点的简单例子:

#!/bin/bash
i=0
a=2
while [ $i -lt $a ]
do
  i=$[i+1]
  echo $i
done

输出:

1
2

但是,如果我没有定义a,我会:

./test.sh: ligne 3 : [: 0 : opérateur unaire attendu

(我允许你用法语进行翻译:))