shell 指令碼學習 三

2021-10-14 15:39:45 字數 3785 閱讀 3008

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...