shell 分支語句基礎03
阿新 • • 發佈:2019-01-02
printf 命令介紹
printf 相比於echo 的移植性更好。且可以格式化字串的輸出樣式。
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
解釋:
%-10s 指一個寬度為10個字元(-表示左對齊,沒有-預設為右對齊)
%4.2f 指格式化為小數,.2指保留兩位小數
常用的格式替代符:
%d:Decimal 對應位置引數必須是十進位制整數,否則抱錯
%s:String 字串--對應位置引數必須是字串
%c:Char 字元 對應位置引數必須是字串或者字元型
%f:float 浮點 對應位置引數必須是數字
shell流程控制
在shell中如果有else分支語句,則在分支中必須有執行語句,否則會報錯
語法格式:
if condition
then
command1
command2
fi
eg:
a=5
b=4
if [ $a != $b ]
then
echo "the number is not equal"
fi
if else 語句的使用直接看例項
a=87
if [ $a -gt 90 ]
then
echo "the grade is perfect "
elif [ $a -gt 80 ]
then
echo "the grade is good "
elif [ $a -gt 60 ]
then
echo "the grade is generic"
else
echo "the grade is bad!"
fi
for迴圈語句
與其它程式語言類似,shell支援for迴圈
一般格式為:
for var in arguments...
do
commands
done
eg:
for loop in 1 "hello" 'a' 14.5
do
echo "the argument is ${loop}"
done
while 迴圈語句
while conditon
do
command
done
在舉例之前我們需要了解一個 let命令
let命令是bash中用於計算的工具,用於執行一個或多個表示式,變數計算中不需要加上$來表示變數
如果表示式中包含了空格或者其它特殊字元則必須引起來。
例項:
自加操作: let no++
自減操作: let no--
簡寫形式: let no+=10, let no-=20
eg:
let a=5+4 #注意空格問題
echo $a #9
b=`expr 6 + 7`
echo $b #13
let命令和expr命令的比較
let 不需要空格隔開表示式的各個字元。而 expr 後面的字元需要空格隔開各個字元
知道了let命令的使用,我們現在可以使用while語句了
需要輸出1-10這幾個數字
number=1
while((${number}<=10))
do
echo ${number}
let "number++"
done
case語句
語法 :
case value in
1)
echo "abc...."
;;
2)
echo "def...."
esac
printf 相比於echo 的移植性更好。且可以格式化字串的輸出樣式。
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
解釋:
%-10s 指一個寬度為10個字元(-表示左對齊,沒有-預設為右對齊)
%4.2f 指格式化為小數,.2指保留兩位小數
常用的格式替代符:
%d:Decimal 對應位置引數必須是十進位制整數,否則抱錯
%s:String 字串--對應位置引數必須是字串
%c:Char 字元 對應位置引數必須是字串或者字元型
%f:float 浮點 對應位置引數必須是數字
shell流程控制
在shell中如果有else分支語句,則在分支中必須有執行語句,否則會報錯
語法格式:
if condition
then
command1
command2
fi
eg:
a=5
b=4
if [ $a != $b ]
then
echo "the number is not equal"
fi
if else 語句的使用直接看例項
a=87
if [ $a -gt 90 ]
then
echo "the grade is perfect "
elif [ $a -gt 80 ]
then
echo "the grade is good "
elif [ $a -gt 60 ]
then
echo "the grade is generic"
else
echo "the grade is bad!"
fi
for迴圈語句
與其它程式語言類似,shell支援for迴圈
一般格式為:
for var in arguments...
do
commands
done
eg:
for loop in 1 "hello" 'a' 14.5
do
echo "the argument is ${loop}"
done
while 迴圈語句
while conditon
do
command
done
在舉例之前我們需要了解一個 let命令
let命令是bash中用於計算的工具,用於執行一個或多個表示式,變數計算中不需要加上$來表示變數
如果表示式中包含了空格或者其它特殊字元則必須引起來。
例項:
自加操作: let no++
自減操作: let no--
簡寫形式: let no+=10, let no-=20
eg:
let a=5+4 #注意空格問題
echo $a #9
b=`expr 6 + 7`
echo $b #13
let命令和expr命令的比較
let 不需要空格隔開表示式的各個字元。而 expr 後面的字元需要空格隔開各個字元
知道了let命令的使用,我們現在可以使用while語句了
需要輸出1-10這幾個數字
number=1
while((${number}<=10))
do
echo ${number}
let "number++"
done
case語句
語法 :
case value in
1)
echo "abc...."
;;
2)
echo "def...."
esac