Shell 常用語法

2021-08-18 01:47:11 字數 4270 閱讀 4580

#!/bin/bash  //選擇編譯環境

*** //正文

i=1

echo

$i#1

echo

"$i"

#1echo

'$i'

#$i

2.1賦值
a=5

#變數定義的時候必須是等號兩邊沒有空格

b=2c=$((a+b)) #變數賦值 7

d=$a+$b

#字串 5+2

2.2從鍵盤輸入變數值
echo

"please input a filename: "

read filename

echo

$filename

2.3系統變數

變數含義

$0這個程式的執行名字

$n這個程式的第n個引數值,n=1…9

$*這個程式的所有引數

$#這個程式的引數個數

$$這個程式的pid

$!執行上乙個背景指令的pid

$?上乙個指令的返回值

2.4雙引號及單引號

echo

"$home

$path"

# 顯示變數值

/home/hbwork opt/kde/bin:/usr/local/bin:

echo '$home

$path'

#顯示單引號裡的內容

$home

$path

2.5變數表示式

$#源字串

echo

"the string length is "

$#字串長度

echo

"the 6th to last string is "

$#擷取從第五個後面開始到最後的字元

echo

"the 6th to 8th string is "

$#擷取從第五個後面開始的2個字元

echo

"after delete shortest string of start is "

$#從開頭刪除a到f的字元

echo

"after delete widest string of start is "

$#從開頭刪除a以後的字元

echo

"after delete shortest string of end is "

$#從結尾刪除f到j的字元

echo

"after delete widest string of end is "

$#從結尾刪除j前面的所有字元包括j

3.1test或

echo "please input a filename: "

read filename

test -f/-d

/-r/-w

/-x$filename

&& echo "the file is xx file"[-f

/-d/-r

/-w/-x

$filename

]&& echo "the file is xx file"

3.2 if
read grades

if [ $grades -ge 90 ] && [ $grades -le 100 ];then

echo

"your grade is excellent."

elif [ $grades -ge 80 ] && [ $grades -le 89 ];then

echo

"your grade is good."

else

echo

"your grade is badly."

fi

3.3 case
echo

"enter a number:"

read num

case

$num

in1)

echo

"1" ;; #注意,這裡是兩個分號

[2-9])

echo

"$num";;

*) echo

"other: $num";;

esac

#結束符

4.1 while
while condition

do ***

done

4.2 unitl
until condition

do ***

done

4.3 for
for n in `seq 2

8`do

echo

$ndone

4.4 退出迴圈

函式引數從1到

1

到n,$0 是檔名

返回值只能是整數,0成功,其他失敗

[function] funcname

()

6.1 while
while

read line # while read -r line

do#do必須在第二行

echo

$line

done

< filename

迴圈中執行效率最高,最常用的方法

注釋:這種方式在結束的時候需要執行檔案,就好像是執行完的時候再把檔案讀進去一樣。

6.2 管道

cat filename | while

read line

do#do必須在第二行

echo

$line

done

當遇見管道的時候管道左邊的命令的輸出會作為管道右邊命令的輸入然後被輸入出來。

6.3 for效率最高

方法一

for  line  in  `cat filename`  #注意這個符號不是單引號

do#do必須在第二行

echo

$done

方法二

for line in $(cat filename)

doecho

$line

done

注意1:轉入到linux的檔案注意轉換檔案格式,修改編碼格式方法詳見:【shell】shell指令碼編碼格式

**注意2:**for逐行讀和while逐行讀是有區別的: while能保留格式

$ cat t.txt

1111

3333

4444

$ cat t.txt | while

read line; do

echo

$; done

1111

3333

4444

$ for line in `cat t.txt`; do

echo

$; done

1111

3333

4444

#!/bin/bash  

id=1

cmd="select count(*) from tempdb.tb_tmp where id=$"

cnt=$(mysql -uroot -p123456 -s

-e"$") #-s一行一行輸出,中間有tab分隔 -e執行sql語句

echo

$cnt

Shell 常用語法

賦值 file 1 兩邊不能有空格 echo file 邏輯判斷 表示式 1 if expression then fi 兩邊必須有空格 2 if expression then fi3 if expression1 o expression2 then elif expression then e...

shell 常用語法基礎

表 31.1.萬用字元 匹配0個或多個任意字元 匹配乙個任意字元 若干字元 匹配方括號中任意乙個字元的一次出現 ls dev ttys ls ch0?doc ls ch0 0 2 doc ls ch 012 0 9 doc注意,globbing所匹配的檔名是由shell展開的,也就是說在引數還沒傳給...

mysql常用語法 MySQL常用語法

更新資料 update 表名 set 健名 更改的值 where 建 刪除資料 delete from 表名 where 索引 create index 索引名稱 on 表名 鍵名 建立試圖 create view 檢視名 鍵,鍵 as select matchno,abs won lost fro...