在使用read做交换处理的时候,需要输入,偶尔需要提供默认值,譬如数字选择,或者yes、no等。
第一种,使用 ${} 进行赋值
${file-my.file.txt} :假如$file 沒有设定,則使用my.file.txt 作传回值。(空值及非空值時不作处理)
${file:-my.file.txt} :假如$file 沒有設定或為空值,則使用my.file.txt 作傳回值。(非空值時不作处理)
${file+my.file.txt} :假如$file 設為空值或非空值,均使用my.file.txt 作傳回值。(沒設定時不作处理)
${file:+my.file.txt} :若$file 為非空值,則使用my.file.txt 作傳回值。(沒設定及空值時不作处理)
${file=my.file.txt} :若$file 沒設定,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(空值及非空值時不作处理)
${file:=my.file.txt} :若$file 沒設定或為空值,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(非空值時不作处理)
${file?my.file.txt} :若$file 沒設定,則將my.file.txt 輸出至STDERR。(空值及非空值時不作处理)
如上,我们可以使用 ${ 变量 :- 值 }
#!/bin/bash
read -p "请输入数字(默认为1):" num
num=${num:- 1}
echo "num is $num"
第二种:使用判断 [ -z ]
#!/bin/bash
read -p "请输入数字(默认为1):" num
#判断num是否为空,空值则执行num=1
if [ -z $num ];then
num=1
fi
echo "num is $num"
发表评论