国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

bash基礎

2024-06-28 13:24:13
字體:
來源:轉載
供稿:網友
bash基礎

1 概念

bash(sh,pdsh擴充): GNU Bourne-Again Shell

sh:Bourne Shell,編程優秀,用戶交互不便。

csh:C Shell,編程接口不如sh,用戶界面友好,與C語言語法相似。 ——>tcsh

ksh:Korn Shell,集成了sh和csh的優點,并完全兼容sh。 ——>pdsh(Public Domain Korn Shell)

zsh

2 語法2.1 變量,數據類型

變量定義:不含保留字(例如“-,*”等),不含空格。

變量的引用:賦值,for循環前不需帶$;其他情況引用變量需要帶"$"(例如,打印,運算等)。

數據類型:shell變量沒有數據類型。

shell語句:=左右不能有空格;shell語句不以”;“結尾。

2.1.1 整數運算(+-*/%):let,exPR

1)let:雙引號

例如,let "x=$x+1"

2)expr:`,空格,特殊字符前需要使用轉義符號/

例如,x=`expr $x + 4`,x=`expr $x /* 4`

【PS】不能進行浮點數運算,沒有浮點數數據類型。

【例子:算術運算,字符拼接,shell的無數據類型】

#!/bin/bash

x=2007

let "x=$x+1"

echo $x

x=`expr $x + 4`

echo $x

echo $(expr $x / 2)

x='Olmpic'$x

echo x=$x

y=12

y=`expr $y /* 2`

echo $y

2.1.2 賦值

x=200

let "x=$x+1"

x=’hello’$x

y=$(expr $x / 2)

y=`expr $y /* 2`

result=$(($result+$num))

num=$((num+1))

#result=1

num=1

result=$(($result+$num))

#num=$((num+1))

#echo $result

echo $(($a+1))

#echo $num

echo 'aaa'+$x

echo $((-123))

echo $(($z))

2.1.3 比較操作

1)-eq,-ne,-gt和-ge,-lt和-le,-z(為空),-n(非空)

2)=,!=,>(無>=),<(無<=)

【PS】

字符串比較時,盡量不用-z,而用!-n代替。

能用1)盡量不用2)。

2.1.4 按位操作

&,|

【位運算:】

ckm@bidc:~/zzhTest> echo $(expr 1 /& 0)

0

ckm@bidc:~/zzhTest> echo $(expr 1 /| 0)

1

#!/bibn/bash

if [ $str !-n ];then

echo null!!

fi

2.2 流程控制2.2.1 if條件控制

if [ expression ] ;then statements

fi

if [ expression ] ;then statements

else statements

fi

if [ expression ] ;then statements

else if [ expression ] then statements

else statements

fi

if [ expression ] ;then statements

elif [ expression ] ;then statements

else statements

fi

【PS】

若then換行,則then前無需加;。

[和]的后、前有空格。

2.2.2 case分支結構

case "$var" in

cindition1 ) statements;;

cindition2 ) statements;;

...

* ) statements;;

esac

2.2.3 for循環

for var in [ list ];do

statements

done

【PS】

var 變量的引用不使用$。

<list>的元素用空格分隔。

2.2.4 while循環

while [ condition ]

do

statements

done

2.2.5 until循環

until [ condition ]

do

statements

done

2.2.6 break/continue

3 bash腳本例子【hello world】腳本的執行:hello

#!/bin/bash

#變量的使用

str='hello world'

echo $str

echo str

--執行文件

bash hello

sh hello

chmod u+x hello

hello

【linux常用命令】

vi zzhdir

#!/bin/bash

ls –a

--執行

sh zzhdir

【局部變量:局部變量的作用域(函數體內)】

#!/bin/bash

function test {

local var=world

echo $var

}

var=hello

echo $var

test

echo $var

【PS】局部變量:首次被賦值時,變量前面加上local。

【if條件:比較操作,if條件控制結構】

#!/bin/bash

a=10

if [ $a -gt 0 ]

then echo 1

else echo 2

fi

【if條件:帶參腳本】

#!/bin/bash

if [ $1 = 10 ];then echo right!

else echo wrong!

fi

--執行

sh test 123

【PS】$1用于匹配命令行的第1個參數。(bash中的保留字)

【case分支】

寫法一:

export LC_ALL=C /*區分大小寫*/

var=A

case "$var" in

[a-z] ) echo 'lowercase letter!';;

[A-Z] ) echo 'lowercase letter!';;

[0-9] ) echo 'number';;

* ) echo other character!;;

Esac

寫法二:

var=A

case "$var" in

[[:lower]] ) echo 'lowercase letter!';;

[[:upper]] ) echo 'upper letter!';;

[0-9] ) echo 'number';;

* ) echo other character!;;

esac

【for循環:無in [list]】

for var ;do

echo ok

done

--執行

sh test

sh test 1 "hello world" a

【for循環:i的作用域】循環體內部(do/done之間)

for i in $(seq 5)

do

echo $i

done

echo $i

--執行

sh test

【for循環:seq】

for i in `seq 1 5`;do

echo TEST!

done

【for循環:i的作用域】定義后的程序塊

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

echo $i

done

echo $i

--執行

sh test

【for循環:命令行參數】。

for param

do

echo $param

done

--執行腳本

sh test 123 456 789

【PS】未指定list,將打印所有命令行參數;當沒有命令行參數時,什么都不打印

【while循環】

num=1

result=0

while [ $num -le 3 ]

do

result=$(($result+$num))

num=$((num+1))

done

echo $result

【until循環】

num=1

result=0

until [ $num -ge 3 ]

do

result=$(($result+$num))

num=$((num+1))

done

echo $result

【break/continue】

for i in `seq 1 5`;do

if [ $i = 3 ];the

continue

else echo $i

fi

done

4 Vi編輯器

命名模式:Esc鍵,“:”英文冒號,“wq”保存退出,“q!”強制退出

插入模式:aAiIuU

刪除單詞:dw

刪除整行:dd

字符串查找:“/”正斜杠

5 相關拓展

保留字

正則

函數

輸入,輸出: >,>>,2>,1>,>&

For循環

變量的作用:整數,字符串,計數,文件屬性

次元立方


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 房山区| 麻城市| 阿图什市| 上虞市| 婺源县| 西林县| 乌兰察布市| 沈阳市| 文山县| 迁西县| 长宁区| 上饶市| 田林县| 尉氏县| 禹州市| 玉山县| 手游| 阿拉尔市| 托克逊县| 延边| 辽阳市| 南投县| 竹溪县| 米林县| 丰镇市| 西贡区| 平遥县| 巩义市| 江安县| 津南区| 利辛县| 日照市| 西安市| 阳西县| 高要市| 黑山县| 鄂尔多斯市| 深泽县| 岢岚县| 抚顺市| 轮台县|