【发布时间】:2016-12-20 14:38:09
【问题描述】:
我有一些代码不起作用。它说,“没有这样的文件或目录”,并在第 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
【问题讨论】:
-
因为运行
[命令时带有参数$i和],从$aantal重定向stdin。 -
以文字形式发布文字,而不是文字图片。
-
更新,+英文代码
-
通过shellcheck.net 运行您的脚本。它会指出你的许多错误。
-
您为什么要使用命令替换来进行简单的分配?
small="abcdefghijklmnopqrstuvwxyz"
标签: bash error-handling while-loop sh