Shell Script(五):交互和算數(shù)運算

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

? ? ? ?一、Shell 腳本與終端用戶的交互
? ? ? ?該交互過程是通過 read 命令來實現(xiàn)的。當腳本執(zhí)行到 read 命令時會等待終端用戶的輸入,用戶輸入完成并按下回車鍵之后,腳本才會繼續(xù)執(zhí)行。接下來通過一個簡單的例子來演示一下通過 read 命令實現(xiàn)腳本和終端的交互過程:

#!/bin/bash

echo -n "Enter some text > "
read text
echo "You entered: $text"

? ? ? ?將上述代碼寫入 read_demo 文件中,設置可執(zhí)行權(quán)限,然后運行效果如下:

jason@jason-Lenovo-Y50-70:~/bin$ read_demo.bash
Enter some text > this is some text
You entered: this is some text

? ? ? ?注意 echo 命令后面有一個 -n 選項,這個選項的作用是 echo 后面的內(nèi)容被輸出后光標保持不換行。如果將上述 read_demo 腳本中 echo 后面的 -n 去掉,那么交互的效果是下面這樣的:

jason@jason-Lenovo-Y50-70:~/bin$ read_demo.bash
Enter some text > 
this is some text
You entered: this is some text

? ? ? ?這個例子可以很好的解釋 echo 的 -n 選項的作用。
? ? ? ?另外介紹一下 read 命令的兩個比較有意思的選項。
? ? ? ?1、-t 選項
? ? ? ?這里對照一段很簡單的腳本來說明:

#!/bin/bash

echo -n "Hurry up and type something! > "
if read -t 3 response; then
    echo "Great, you made it in time!"
else
    echo "Sorry, you are too slow!"
fi

? ? ? ?在這段腳本中,read 的使用形式 是 ead -t 3 response。當腳本執(zhí)行到這里時,將會等待用戶的輸入,如果用戶在 3 秒內(nèi)沒有完成輸入并回車,那么腳本將會不再等待用戶,而是繼續(xù)向下執(zhí)行。
? ? ? ?2、-s 選項
? ? ? ?read 命令 -s 選項的作用是當用戶在終端進行輸入給變量賦值時,終端并不顯示用戶輸入的內(nèi)容。比如,當給變量的值是密碼時,可以使用這個選項。

? ? ? ?二、算數(shù)運算
? ? ? ?在 Shell Script 中涉及的數(shù)據(jù)類型都是字符串,所以要想實現(xiàn)其他數(shù)據(jù)類型的操作,需要額外地轉(zhuǎn)換一下。這里介紹一下 Shell 中整型的算數(shù)運算,包括 +、-、*、/、% 和 ** 六種運算。
? ? ? ?這里通過實例演示來說明:

jason@jason-Lenovo-Y50-70:~/bin$ echo $((2+2))
4
jason@jason-Lenovo-Y50-70:~/bin$ echo $(( 2+2 ))
4
jason@jason-Lenovo-Y50-70:~/bin$ echo $(( 2 + 3 * 2))
8

? ? ? ?從這個例子中可以總結(jié)一下 Shell 中算數(shù)運算的用法:
? ? ? ?(1)算式需要使用 $(( )) 包含起來;
? ? ? ?(2)算式中操作符之間的空格是被忽略的;
? ? ? ?說明:
? ? ? ?(1)這里算式得到的結(jié)果仍然是一個字符串;
? ? ? ?(2)** 是冪運算,即 x**y <=> pow(x, y), 如:

jason@jason-Lenovo-Y50-70:~/bin$ echo $((2 ** 3)) = 8

? ? ? ?三、交互和算數(shù)運算的綜合演示
? ? ? ?接下來將上述的兩部分內(nèi)容綜合起來編寫一個腳本來結(jié)束本篇文章:

#!/bin/bash

number=0

echo -n "Enter a number > "
read number

echo "Number is $number"
if [ $((number % 2)) -eq 0 ]; then
    echo "Number is even"
else
    echo "Number is odd"
fi

相關文檔

http://linuxcommand.org/lc3_wss0100.php

上一篇:Shell Script(四):條件分支語句 1
下一篇:Shell Script(六):條件分支語句 2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容