2011-07-21 37 views
0

選擇的結果之一,我想隨機選擇兩種結果之一SHrandomally在SH

#!/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 )作爲命令。我究竟做錯了什麼?

回答

4

只是把一個空間的第一[之後,像

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

哦嘖。 *** \ *面對手掌\ ****謝謝。 – user606723

+0

呃..那''$ [$ RANDOM%2]''似乎有點不正統,但仍然......爲什麼不......會做到這一點。 :) – filippo

2

這裏交配,你只是錯過the syntax一點:

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

現在,如果你想打動揭掉的朋友,你可以請嘗試just this

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

順便說一句,最佳做法和指南,我strongl y推薦這本網上書:Advanced Bash-Scripting Guide

乾杯!

0

如果您正在使用bash,您可以使用((expression))格式:

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

我意識到這一點,但我希望這是可移植的。 – user606723