2015-12-30 77 views
2

我是一名等級新手,他試圖讓我的第一個「if then」語句正常工作。我編制了一個總的bs情況作爲審判,但它不起作用。我已經閱讀了關於如何格式化的一半描述,但是我不知道我可能會做錯什麼。比較if語句在測試命令bash中沒有按預期工作

我的腳本:

#!/bin/bash 

if [ 10 > $1 ] 
    then 
    printf "Too big\n" 
    else 
    printf "Too small\n" 
if 

我想我可以提供任何數量,在命令行中的第一個參數和腳本會告訴我一個合適的答案。沒有快樂。所有我曾經得到的CMD線:

Johns-iMac:~ johnyoung$ ./test3 5 
Too big 
Johns-iMac:~ johnyoung$ ./test3 50 
Too big 

因爲我一直在做這個腳本的做法最終被稱爲「TEST3」

任何機構能幫助我嗎?感謝負載。

+0

看一看[7.1。介紹if](http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html)Bash入門指南。 – user3439894

回答

1

在bash中,>不是「大於」的運算符。改爲使用-gt。 此外,如果您的陳述需要以fi而不是if結束。

> bash用於重定向程序的輸出。例如。 date > date.txt將會把「date」命令的輸出到文件「date.txt」

要開始使用bash腳本,你可以看看這個教程: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc11

3

if [ 10 > $1 ]>解釋作爲測試命令[中的輸出重定向。您可以使用bash內置的[[]]來進行數值比較。

#!/bin/bash 

if [[ 10 > $1 ]] 
    then 
    printf "Too big\n" 
    else 
    printf "Too small\n" 
fi 

您還可以使用-gt(大於),-lt(小於),-ge(大於或等於)等數值比較:

if [[ 10 -gt $1 ]] 
... 
... 
fi 

if ((10 > $1)) 
... 
... 
fi 

一般而言,內建關鍵字[[]]應優先於,因爲它不會執行glob expan與測試命令[相比,sion或word拆分以及更少的錯誤易於使用。

但缺點是[[]]不被所有的shell支持,而所有的shell都支持測試命令[

另請閱讀:What is the difference between test, [ and [[ ?進行詳細討論。

0

你應該使用:

if [ 10 -gt $a ] 
... 

比較數字