2.字符串初值的处理
问题
本案例要求编写一个脚本sumx.sh,求从1-x的和,相关要求如下:
从键盘读入x值
当用户未输入任何值时,默认按1计算
方案
步骤
实现此案例需要按照如下步骤进行。
步骤一:认识字符串初值的最常见处理方法
1)只取值,${var:-word}
若变量var已存在且非Null,则返回 $var 的值;否则返回字串“word”,原变量var的值不受影响。
变量值已存在的情况:
[root@svr5 ~]# echo $SCHOOL //查看原变量值
Tarena IT Group.
[root@svr5 ~]# echo ${SCHOOL:-Tarena} //因SCHOOL已存在,输出变量SCHOOL的值
Tarena IT Group.
[root@svr5 ~]# echo $SCHOOL //原变量的值并不改变
Tarena IT Group.
变量值不存在的情况:
[root@svr5 ~]# unset SCHOOL //清除SCHOOL变量
[root@svr5 ~]# echo ${SCHOOL:-Tarena} //因SCHOOL已不存在,输出“Tarena”
Tarena
[root@svr5 ~]# echo $SCHOOL //变量SCHOOL仍然不存在
[root@svr5 ~]#
2)取值+赋值,${var:=word}
若变量var已存在且非Null,则返回 $var 的值,原变量值不变;否则返回字串“word”,并将此字串赋值给变量 var。
变量值不存在的情况:
[root@svr5 ~]# echo $SCHOOL //前面已将此变量清除
[root@svr5 ~]# echo ${SCHOOL:=Tarena} //因SCHOOL不存在,输出“Tarena”
Tarena
[root@svr5 ~]# echo $SCHOOL //且将“Tarena”赋值给变量SCHOOL
Tarena
变量值已存在的情况:
[root@svr5 ~]# echo $SCHOOL //确认当前的变量值
Tarena
[root@svr5 ~]# echo ${SCHOOL:=Tarena IT Group.} //变量已存在,输出其值
Tarena
[root@svr5 ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 140: …下 [root@svr5 ~]#̲ vim sumx.sh #!…{x:-1}
i=1; SUM=0
while [ $i -le
x
]
d
o
l
e
t
S
U
M
+
=
i
l
e
t
i
+
+
d
o
n
e
e
c
h
o
"
从
1
到
x ] do let SUM+=i let i++ done echo "从1到
x]doletSUM+=ileti++doneecho"从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