7:字符串初值的處理

7.1 問題
本案例要求編寫一個腳本sumx.sh,求從1-x的和,相關要求如下:

從鍵盤讀入x值
當用戶未輸入任何值時,默認按1計算
7.2 方案
通過${var:-word}判斷變量是否存在,決定變量的初始值。

7.3 步驟
實現此案例需要按照如下步驟進行。

步驟一:認識字符串初值的最常見處理方法

1)只取值,${var:-word}

若變量var已存在且非Null,則返回 $var 的值;否則返回字串“word”,原變量var的值不受影響。

變量值已存在的情況:

[root@svr5 ~]# XX=11
[root@svr5 ~]# echo $XX //查看原變量值
11
[root@svr5 ~]# echo ${XX:-123} //因XX已存在,輸出變量XX的值
11
變量值不存在的情況:

[root@svr5 ~]# echo ${YY:-123} //因YY不存在,輸出“123”
123
編寫一個驗證知識點的參考示例腳本如下:

[root@svr5 ~]# cat /root/test.sh
#!/bin/bash
read -p “請輸入用戶名:” user
[ -z KaTeX parse error: Expected 'EOF', got '&' at position 8: user ] &̲& exit …{pass:-123456} //如果用戶沒有輸入密碼,則默認密碼爲123456
useradd userecho"user echo "pass" | passwd --stdin $user
步驟二:編寫sumx.sh腳本,處理read輸入的初值

用來從鍵盤讀入一個正整數x,求從1到x的和;當用戶未輸入值(直接回車)時,爲了避免執行出錯,應爲x賦初值1 。

1)腳本編寫參考如下

[root@svr5 ~]# vim sumx.sh
#!/bin/bash
read -p “請輸入一個正整數:” x
x=${x:-1}
i=1; SUM=0
while [ $i -le x]doletSUM+=ileti++doneecho"1x ] do let SUM+=i let i++ done echo "從1到x的總和是:$SUM"
[root@svr5 ~]# chmod +x sumx.sh
2)驗證、測試腳本執行效果:

[root@svr5 ~]# ./sumx.sh
請輸入一個正整數:25 //輸入25,正常讀入並計算、輸出結果
從1到25的總和是:325
[root@svr5 ~]# ./sumx.sh
請輸入一個正整數:70 //輸入70,正常讀入並計算、輸出結果
從1到70的總和是:2485
[root@svr5 ~]# ./sumx.sh
請輸入一個正整數: //直接回車,設x=1後計算、輸出結果
從1到1的總和是:1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章