一、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,由史蒂夫 伯...