长话短说,我注意到LIST中的"*"
以某种方式显示了我正在执行的文件的名称。无论如何,是否让代码显示"*"
而不显示文件名?
我仍然是脚本新手,想不出任何办法。请帮助...
#!/bin/bash
LIST='W 2 v * %'
encr="Cd9AjUI4nGglIcP3MByrZUnu.hHBJc7.eR0o/v0A1gu0/6ztFfBxeJgKTzpgoCLptJS2NnliZLZjO40LUseED/"
salt="8899Uidd"
for i in $LIST
do
for j in $LIST
do
for k in $LIST
do
for l in $LIST
do
for a in $LIST
do
echo -n "$i$j$k$l$a "
test=`mkpasswd -m SHA-512 $i$j$k$l$a -s $salt`
if [ $test == $encr ] ; then
echo " Password is: $i$j$k$l$a"
exit
fi
done
done
done
done
done
#error displaying *
与echo *
相同,将球体*
扩展为当前目录中的文件名,同样的方式a=*; for i in $a; do echo $i; done
将在当前目录中打印路径。您可以在网上的各个地方阅读有关引号和转义的更多信息。
您可以使用bash数组正确引用元素:
LIST=(W 2 v "*" %)
for i in "${LIST[@]}"; do
注意:
$(..)
。[ "$test" = "$encr" ]
以防止受到此类常见错误的侵害。==
是bash扩展名,请使用=
可移植。echo {W,2,v,"*",%}{W,2,v,"*",%}{W,2,v,"*",%}{W,2,v,"*",%}{W,2,v,"*",%}
看起来都较短。