shell學習十六 read

2021-08-10 03:00:06 字數 2279 閱讀 2045

例題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...