例題1:
如果讀入的不是整數或者引數不是兩個(可以判斷有沒有輸入內容),
以上shell指令碼的執行會有什麼結果?如何解決這兩個問題?
思考:1、輸入為兩個值過關。
2、輸入均為整數過關。
3、計算
方法一使用read
[root@node01 day6]# vi read1.sh
#!/bin/bash
read -p "please insert values:" a b
expr 1 + $a &>/dev/null
a=$?
expr 1 + $b &>/dev/null
b=$?
if [ ! -n "$a" ] || [ ! -n "$b" ] 這裡-n是非空,(! -n)可以使用-z
then
echo "please insert two values!"
exit 1
elif [ "$a" -ne 0 ] || [ "$b" -ne 0 ]
then
echo "plesse insert two zhengshu!"
exit 1
else
echo "$a-$b =$(($a-$b))"
echo "$a+$b =$(($a+$b))"
echo "$a*$b =$(($a*$b))"
echo "$a/$b =$(($a/$b))"
echo "$a**$b =$(($a**$b))"
echo "$a%$b =$(($a%$b))"
exit 1
fi[root@node01 day6]# sh read1.sh
please insert values:3 3
3-3 =0
3+3 =6
3*3 =9
3/3 =1
3**3 =27
3%3 =0
錯誤輸入:
[root@node01 day6]# sh read1.sh
please insert values:1 f
plesse insert two zhengshu!
[root@node01 day6]# sh read1.sh
please insert values:f f
plesse insert two zhengshu!
[root@node01 day6]# sh read1.sh
please insert values:d
please insert two values!
方法二使用傳參
[root@node01 day6]# vi read2.sh
#!/bin/bash
#wolf
#qq 1098331428
#v1.0
if [ $# -ne 2 ]
then
echo "usage:$0 num1 num2"
exit 1
fiexpr $1 + $2 &>/dev/null
if [ $? -ne 0 ]
then
echo "error:please input two numbers"
exit 1
else
echo "a-b =$(($1-$2))"
fi[root@node01 day6]# sh read2.sh 2 3
a-b =-1
[root@node01 day6]# sh read2.sh 2 f
error:please input two numbers
[root@node01 day6]# sh read2.sh
usage:read2.sh num1 num2
方法三直接使用expr判斷即可
#!/bin/bash
echo "this is a calculation script,welcome to use."
read -p "pls input:" a b
expr $a + $b &>/dev/null
if [ $? -eq 0 ]
then
echo "a-b =$(($a-$b))"
else
echo "please input two values and they are integer."
echo "請輸入兩個整數,並使用空格隔開"
exit
fi
Shell程式設計 read命令
1.read 讀取輸入的值 語法 read 選項 值 p 提示語句 n 字元個數 t 等待時間,秒 s 隱藏輸入 2.例子 等待3秒輸入,提示語句please input your name bin bash read t 3 p please input your name name echo n...
shell指令碼 read用法
read 是shell基本讀取函式 基本用法 read 選擇引數 接受變數 預設讀取鍵盤輸入 p指定要顯示的提示 s靜默輸入,一般用於密碼 n 指定輸入的字元長度最大值 d 字元 輸入結束符,當你輸入的內容出現這個字元時,立即結束輸入 t n 超出n秒沒有進行輸入,則自動退出。例項 read 未指定...
shell指令碼學習(十六) 陣列
shell陣列 是若干資料的集合,其中的每乙份資料都稱為元素,shell陣列元素的下標也是從0開始計數,獲取陣列中的元素要使用下標 下標可以是乙個整數,也可以是乙個結果為整數的表示式 下標必須大於等於0。shell中,用小括號 來表示陣列,陣列元素之間用空格來分隔。由此,定義陣列的一般形式為 arr...