我有一个 bash 脚本;该脚本是生成一个随机数并让用户猜测它。
printf 'Guess the number (1-10) : '
read -r n
randint=$(( ( RANDOM % 10 ) + 1 ))
if [ $n = $randint ];
then
echo "You Won !"
else
echo "Sorry, try again !"
fi
Run Code Online (Sandbox Code Playgroud)
它有效,但在下一个脚本中,我已将此代码编码为 base64 并尝试使用以下代码运行它。
exec="cHJpbnRmICdHdWVzcyB0aGUgbnVtYmVyICgxLTEwKSA6ICcKcmVhZCAtciBuCnJhbmRpbnQ9JCgoICggUkFORE9NICUgMTAgKSAgKyAxICkpCgppZiBbICRuID0gJHJhbmRpbnQgXTsKdGhlbgplY2hvICJZb3UgV29uICEiCmVsc2UKZWNobyAiU29ycnksIHRyeSBhZ2FpbiAhIgpmaQ=="
base64 -d <<< $exec | sh
Run Code Online (Sandbox Code Playgroud)
它在 Cygwin 终端中给出此错误:
Guess the number (1-10) : sh: line 4: [: too many arguments
Sorry, try again !
Run Code Online (Sandbox Code Playgroud)
我尝试了在线编译器,但也失败了:
sh: 5: [: =: unexpected operator
Run Code Online (Sandbox Code Playgroud)
我不知道要解决这个问题。