Bash程式設計(五)

2021-09-20 22:45:33 字數 3276 閱讀 3809

一、bash判斷字元型別

二、bash指令碼程式設計語法

三、shell的99乘法表

一、bash判斷字元型別

//輸入乙個字串,判斷其型別

方法一、printf實現

printf實現方法

格式替換符:

%b 相對應的引數被視為含有要被處理的轉義序列之字串。 

%c ascii字元。顯示相對應引數的第乙個字元 

%d, %i 十進位制整數 //如果目標變數不是整數,printf將會報錯

%e, %e, %f 浮點格式  //a=1.2.3  && echo "$e" "$a"  不會報錯。建議不要使用

%g %e或%f轉換,看哪乙個較短,則刪除結尾的零 

%g %e或%f轉換,看哪乙個較短,則刪除結尾的零 

%o 不帶正負號的八進位制值 

%s 字串 

%u 不帶正負號的十進位制值 

%x 不帶正負號的十六進製制值,使用a至f表示10至15 %x 不帶正負號的十六進製制值,使用a至f表示10至15 

%% 字面意義的% 轉義序列

轉義序列

\a 警告字元,通常為ascii的bel字元 

\b 後退 

\c 抑制(不顯示)輸出結果中任何結尾的換行字元(只在%b格式指示符控制下的引數字串中有效),而且,任何留在引數裡的字元、任何接下來的引數以及任何留在格式字串中的字元,都被忽略 

\f 換頁(formfeed) 

\n 換行 

\r 回車(carriage return)

\t 水平製表符 

\v 垂直製表符 

\\ 乙個字面上的反斜槓字元 

\ddd 表示1到3位數八進位制值的字元,僅在格式字串中有效 

\0ddd 表示1到3位的八進位制值字元

#!/bin/bash  

function check() -eq 1 ] && echo "char" && return  

echo "string"  

}  方法二、awk實現

awk '' <<< "323"

判斷乙個var是否是int的方法:

expr $var + 0 &>/dev/null  //能夠實現加法運算則為int

echo $args | sed 's/[0-9]//g'  //刪除數字,看目標值是否為空

echo $args | sed 's/[0-9]//g' | sed 's/-//g'  //排除+ / -

#echo $a | grep "^[[:digit:]]\+" 

#if [ $a == 1 ]; then echo ok; fi

#if [ $a == 1 ]; then echo ok; else echo "false" ;fi    //then帶乙個語句,else帶乙個語句。後面都要帶;

二、bash指令碼程式設計語法

順序執行

選擇執行:if,case

迴圈執行:while,until,for

for迴圈:

for var in list ; do 

迴圈體done

for ((;;)) ;do

迴圈體done

while迴圈

while condition;do    

迴圈體條件修正

done

while read var;do

迴圈體done 《   /path/to/file

while:

進入條件:condation測試為真,

提出條件:condation測試為假

until    //wile 前加上! 就是while的效果

until conditon ;do

迴圈體迴圈控制變數修正表示式

done

進入條件:condition測試為假

退出條件:condition測試為真

注意:    

a=1;b=2

echo "$*$=$[$a*$b]"

echo "$a*$b=$[$a*$b]"  //這兩個結果一樣,只是,帶上{} 主要是為了區分開來

三、shell的99乘法表

#!/bin/bash

declare -i i=1

declare -i j=1

##############for###############

for ((i=1;i<=9;i++));do

for ((j=i;j<10;j++));do

echo -n -e "$i*$j=$[$i*$j]\t"

done

echo

done

for ((i=1;i<=9;i++)) ;do

for ((j=1;j<=i;j++));do

echo -n -e "$i*$j=$[$i*$j]\t"

done

echo

done

##############while###############

i=1j=1

while [ $i -lt 10 ] ;do

j=1while [ $j -le $i ] ;do

echo -e -n "$i*$j=$[$i*$j]\t"

let j++

done

let i++

echo

done

i=1j=9

while  [ $i -lt 10 ] ;do

j=$i    

while [ $j -le 9 ]; do

echo -e -n "$i*$j=$[$i*$j]\t"

let j++

done    

let i++

echo

done     

##############until###############

i=1j=1

until [ $i -gt 9 ] ;do

j=$i

until [ $j -gt 9 ] ;do

echo -e -n "$i*$j=$[$i*$j]\t"

let  j++

done

let i++

echo

done 

i=1until [ $i -gt 9 ] ;do

j=1until [ $j -gt $i ];do

echo -e -n "$i*$j=$[$i*$j]\t" 

let j++

done

echo 

let i++

done 

bash程式設計

sticky許可權 每個使用者只能刪除自己的檔案 sgid 其他使用者在該目錄創立檔案仍然是該目錄的屬組 suid 執行的程式是該程式使用者執行 suid s 沒x許可權 s 有x許可權 t other有x許可權 t 沒x bin bash if lt 1 then echo exit 1 fiif...

Shell程式設計 bash

shell是使用者與linux作業系統溝通的橋梁,也是一種用c語言編寫的程式,同時也是命令解釋程式的統稱。使用者既可以輸入命令執行,也可以利用shell指令碼程式設計,用以完成更加複雜的操作。時至今日,shell程式設計仍然起著不可忽視的作用,深入地了解和熟練地掌握shell程式設計,對更好地了解和...

bash特性及bash指令碼程式設計初步

1.bash簡介 bash 是乙個為gnu計畫編寫的unix shell。它的名字是一系列縮寫 bourne again shell 這是關於bourne shell sh 的乙個雙關語 bourne again born again bourne shell是乙個早期的重要shell,由史蒂夫 伯...