printf 命令的語法 預設不會像 echo 一樣自動新增換行符
printf format-string [arguments...]
#format-sting 格式控制字串 arguments 為引數列表
#!/bin/bash
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
執行指令碼,輸出結果:(test.sh 檔案使用vi 命令建立並cd 到指定目錄)
$ chmod +x ./test.sh #設定執行許可權
$ ./test.sh #執行指令碼
姓名 性別 體重kg
郭靖 男 66.12
楊過 男 48.65
郭芙 女 47.99
格式替代字元
%s %c %d %f 都是格式替代符,%s 輸出乙個字串,%d 整型輸出,%c 輸出乙個字元,%f 輸出實數,以小數形式輸出。
%-10s 指乙個寬度為 10個字元(- 表示左對齊,沒有則表示右對齊),任何字元都會被顯示在 10 個字元寬的字元內,如果不足則自動以空格填充,超過也會將內容全部顯示出來。
%-4.2f 指格式化為小數,其中 .2 指保留2位小數。
%s %c %d %f 都是格式替代符,%s 輸出乙個字串,%d 整型輸出,%c 輸出乙個字元,%f 輸出實數,以小數形式輸出。
%-10s 指乙個寬度為 10 個字元(- 表示左對齊,沒有則表示右對齊),任何字元都會被顯示在 10 個字元寬的字元內,如果不足則自動以空格填充,超過也會將內容全部顯示出來。
%-4.2f 指格式化為小數,其中 .2 指保留2位小數。
執行指令碼,輸出結果如下;對應理解
1 abc
1 abc
abcdefabcdefabc
defa b c
d e f
g h i
j and 0 #null 不顯示
printf 待研究------(0)
shell test 命令
適用範圍:檢查某個條件是否成立 :數值 字元 檔案
num1=100
num2=100
iftest $[num1] -eq $[num2]
then
echo
'兩個數相等!'
else
echo
'兩個數不等!'
fi
a=5
b=6result=$[a+b]
#等號兩邊不能有空格
echo
"result 為: $result"
字串類測試
=等於則為真
!=不相等則為真
-z字串的長度為0則真
-n字串的長度不為0則真
另外,shell 還提供了與( -a )、或( -o )、非( ! )三個邏輯操作符用於將測試條件連線起來,其優先順序為: ! 最高, -a 次之, -o 最低。
cd /bin
iftest -e ./notfile -o -e ./bash
then
echo
'至少有乙個檔案存在!'
else
echo
'兩個檔案都不存在'
fi
注: 在sh/bash裡,如果else分支沒有語句執行,就不要寫這個else。
if else 語句
if condition
then
command1
command2
...fiif[$(
ps -ef |
grep -c "ssh"
) -gt 1]
;then
echo
"true"
;else
echo
"false"
;fi
if else-if else 例項
a=10
b=20if[
$a==$b]
then
echo
"a 等於 b"
elif
[$a -gt $b
]then
echo
"a 大於 b"
elif
[$a -lt $b
]then
echo
"a 小於 b"
else
echo
"沒有符合的條件"
fi
for 迴圈for迴圈的一般格式
for loop in 1 2 3 4 5
doecho
"the value is: $loop"
done
輸出結果
the value is: 1
the value is: 2
the value is: 3
the value is: 4
the value is: 5
while語句
#!/bin/bash
int=1
while(( $int<=5 ))
do echo $int
let "int++"
done
注: bash let 命令,它用於執行乙個或多個表示式,變數計算中不需要加上 $ 來表示變數
until迴圈case
echo
'輸入 1 到 4 之間的數字:'
echo
'你輸入的數字為:'
read anum
case
$anum
in 1)
echo
'你選擇了 1';;
2)echo
'你選擇了 2';;
3)echo
'你選擇了 3';;
4)echo
'你選擇了 4'
continue
#跳出當前迴圈;;
*)echo
'你沒有輸入 1 到 4 之間的數字'
break
#跳出整個迴圈;;
esac
shell指令碼學習 三
time for i in seq 11111 do count echo expr length done time 表示打出當前指令碼執行時間,後面的語句 表示求字元長度 變數的數值計算 a xx b 只能計算整數 變數在前,先輸出變數值,變數在後,就是先運算後輸出變數的值 表示冪運算 判斷檔案...
Shell指令碼(三) Shell指令碼入門
1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...
Shell 指令碼學習筆記三 Shell字串
your name li lei 雙引號字串 str this is a string 單引號字串 拼接字串 your name qinjx greeting hello,your name greeting 1 hello,echo greeting greeting 1 獲取字串長度 strin...