Próbuję losowo wybrać jeden z dwóch wyników w sh
#!/bin/sh
if [$[ $RANDOM % 2] -eq 1 ]
then
echo yes
else
echo no
fi
Daje
sh-3.2$ sh test.sh
test.bash: line 4: [1: command not found
no
Oczywiście próbuje wykonać (0,1) jako polecenie. Co ja robię źle?
3 odpowiedzi
Po prostu wstaw spację po pierwszym [, np.
#!/bin/sh
if [ $[ $RANDOM % 2] -eq 1 ]
then
echo yes
else
echo no
fi
Tutaj kolego, po prostu przegapiłeś składnię trochę :
#!/bin/sh
if [[ $((RANDOM % 2)) -eq 1 ]] ; then
echo "yes"
else
echo "no"
fi
Teraz, jeśli chcesz zaimponować znajomym, możesz spróbować tylko to a>:
[[ $((RANDOM % 2)) -eq 1 ]] && echo "yes" || echo "no"
Przy okazji, najlepsze praktyki i przewodniki, gorąco polecam tę książkę internetową: Advanced Bash-Scripting Guide
Twoje zdrowie!
Jeśli używasz bash, możesz użyć ((expression))
format:
#! /bin/sh
if ((RANDOM%2==1)); then
echo yes
else
echo no
fi
Podobne pytania
Nowe pytania
linux
PYTANIA LINUX MUSZĄ BYĆ ZWIĄZANE Z PROGRAMOWANIEM. Użyj tego tagu tylko wtedy, gdy Twoje pytanie dotyczy programowania przy użyciu interfejsów API systemu Linux lub zachowania specyficznego dla systemu Linux, a nie tylko dlatego, że zdarzyło Ci się uruchomić kod w systemie Linux. Jeśli potrzebujesz wsparcia dla systemu Linux, możesz wypróbować https://unix.stackexchange.com lub witrynę Stack Exchange określonej dystrybucji Linuksa, taką jak https://askubuntu.com lub https://elementaryos.stackexchange.com/
$[ $RANDOM % 2]
wydaje się nieco niekonwencjonalne, ale nadal... dlaczego nie... zrobi to. :)