我有一些代码不起作用。它说,"没有这样的文件或目录",并在第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
答案 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
(我允许你用法语进行翻译:))