выберите один из результатов случайным образом в ш - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь случайным образом выбрать один из двух результатов в ш

#!/bin/sh
if [$[ $RANDOM % 2] -eq 1 ]
then
echo yes
else
echo no
fi

дает

sh-3.2$ sh test.sh
test.bash: line 4: [1: command not found
no

Очевидно, он пытается выполнить (0,1) как команда.Что я делаю не так?

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

просто ставьте пробел после первого [, как

#!/bin/sh
if [ $[ $RANDOM % 2] -eq 1 ]
then
echo yes
else
echo no
fi
2 голосов
/ 21 июля 2011

Здесь приятель, вы только что пропустили синтаксис немного:

#!/bin/sh
if [[ $((RANDOM % 2)) -eq 1 ]] ; then
    echo "yes"
else
    echo "no"
fi

сейчас, если вы хотите произвести впечатление на своих друзей, вы можете попробовать только это :

[[ $((RANDOM % 2)) -eq 1 ]] && echo "yes" || echo "no"

Кстати, лучшие практики и руководства, я настоятельно рекомендую эту веб-книгу: Расширенное руководство по написанию сценариев Bash

ура!

0 голосов
/ 21 июля 2011

Если вы используете bash , вы можете использовать ((expression)) формат:

#! /bin/sh
if ((RANDOM%2==1)); then
    echo yes
else
    echo no
fi
...