我是bash脚本世界的新手,在学习期间我编写了一个简单的密码验证器脚本:
#! /bin/bash
args=("$@")
PASSWORD=${args[1]}
if [[ "$PASSWORD" =~ [0-9A-Za-z] ]]
then
echo "PASSWORD LEGIT"
else
echo "WRONG PASSWORD"
fi
对于参数PassWord12
,它应该输出PASSWORD LEGIT
,但它没有。我使用双括号而不是'test'语法。我做错了什么?谢谢你。
如果您运行declare -p args
,您将得到declare -a args=([0]="PassWord12")
,这清楚地表明您传递的值在数组中具有0索引。位置参数从1
开始,但数组索引从0
开始。
你可以使用
args=("$@")
PASSWORD="${args[0]}"
if [[ "$PASSWORD" =~ [0-9A-Za-z] ]]
then
echo "PASSWORD LEGIT"
else
echo "WRONG PASSWORD"
fi
如果您echo
$PASSWORD
,您将看到您将看到传递给脚本的值
请注意,您可能希望使用[[:alnum:]]
而不是[0-9A-Za-z]
。