tft每日頭條

 > 科技

 > linuxshell知識

linuxshell知識

科技 更新时间:2024-12-19 14:56:58

shell不僅是一種命令解釋器,還是一種編程語言,非常擅長處理文本類型的數據。由于linux系統中的所有配置文件都是純文本的,所以shell編程語言在Linux系統使用中發揮了巨大的作用。

linuxshell知識(LinuxShell編程編程入門從第一個Shell腳本開始吧)1

使用shell編寫的程序類似于DOS下的批處理程序,簡單來說,shell編程就是對一系列Linux命令的邏輯化處理。例如,我們在進行自動化測試的時候,需要将代碼部署到服務器進行管理和集成,每次都要執行拉取最新的代碼、編譯打包、上傳服務器一系列的步驟,效率不高而且很繁瑣。

我們将這個過程寫成一個Shell腳本,每次隻需要運行一下這個腳本即可完成上述步驟,簡單方便,提高工作效率。

一、什麼是shell腳本?

我們可以在文件中存放一系列的Linux命令,并對其進行邏輯化處理,通常将shell編寫的程序稱為shell腳本或者shell程序。

Shell腳本以行為單位,包含注釋、命令、變量以及流程控制語句;其中:

1.注釋:注釋對于一個腳本的維護和可讀性來說,尤為重要,沒有任何注釋的腳本是不可取的。Shell腳本内,注釋以#開頭;

2.變量:shell變量支持字符串變量和整形變量;

3.命令:常用的Linux命令;

4.流程控制語句:流程控制語句用來編寫複雜的腳本,比如for循環,if判斷等;

二、shell編程規範

1.shell腳本以#!開頭,通知系統以何種解釋器來執行該腳本;在Linux系統中,有多種版本的shell,包括bash、tcsh、zsh等;我們最常用的解釋器是bash,因此,在編寫shell腳本時,我們會先聲明使用的shell類型,語句如下:

  #!/bin/bash

2.以注釋的形式說明shell腳本的如下内容:腳本名稱、腳本功能、版權聲明,如果是較為複雜的腳本,應該對算法進行簡單說明;

三、shell腳本的創建

通過以下步驟,可以創建一個簡單的shell腳本:

1.新建文件:vi filename

如果該文件存在,則打開;如果不存在,則新建一個文件

2.腳本編寫:

#!/bin/bash

  #輸出hello world字符串

  echo hello world

3.腳本運行:

shell腳本運行有兩種方式:sh filename和./filename

sh filename:當被執行腳本沒有可執行權限時,隻能用這種方式來運行;

./filename:在使用./filename這種方式來運行腳本時,需要先将腳本文件的訪問權限修改為可執行,這樣腳本才能作為可執行文件被調用;因此,在使用./filename時,一般分為兩步:

  chmod u x filename

  ./filename

四、變量

在實際的編程過程中,變量是必不可少的。Shell腳本中的變量包含字符串變量和整形變量;

1、變量賦值

賦值語句如下:

name="string";其中,

name是指變量名,使用小寫字母進行命名;

=是賦值符号,=兩邊不能有空格,否則會将其視為命令執行;

string是變量值,使用雙引号

2、變量引用

在引用變量時,隻需要在變量前加上$即可;注意,在變量賦值的時候,無需加$;

具體使用方式如下:

#!/bin/bash

  #自定義變量output

  output="hello world"

  echo $output

五、整數運算

以上,我們了解到,shell變量包含整形變量和字符串變量;本節我們來簡單介紹一下整數運算。

一般來說,shell的整數運算和其他的編程語言并無區别,包括加減乘除、取餘等;變量的所有計算都是通過(())進行的,我們簡單介紹一下他的寫法,如下:

#!/bin/bash

  #自定義變量a和b,并輸出二者的和

  a="10"

  b="20"

  #計算a和b的和

  echo $(($a $b))

  #計算a和b的差

  echo $(($a-$b))

  #計算a和b的乘積

  echo $(($a*$b))

  #計算a/b

  echo $(($a/$b))

  #求餘

  echo $(($a%$b))

六、字符串操作

我們可以對字符串進行如下操作:

#!/bin/bash

  #對字符串進行操作

  V2='Hello world.everyone.'

  #計算字符串的長度,#号表示提取長度

  echo ${#V2}

  #從position開始截取字符串,例如position為2

  echo ${V2:2}

  #從位置position開始提取長度為length的子串,{string:position:length};例如position為2,長度為2

  echo ${V2:2:2}

  #從開頭删除最短匹配字符串:${string#substring},如下代碼,Hello被截取

  echo ${V2#Hello}

  #删除從xx到xx的所有字符,為最短匹配,裁減到第一個.;如下代碼,删除從H到.的所有字符

  echo ${V2#H*.}

  #删除從xx到結尾的所有字符;如下代碼,删除從H到結尾的所有字符

  echo ${V2##H*}

  #從結尾開始,删除xx到xx的字符串;如下代碼從結尾開始删除到.;輸出Hello world

  echo ${V2#.%.}

  #從結尾開始,删除所有字符串

  echo ${V2#.%%}

七、條件判斷

1、test

test命令可以用于檢查某個條件是否成立,可以分為數值、字符串、文件三個方面,使用方法如下:

#!/bin/bash

  #條件判斷

  filename=test.sh

  num1=10

  num2=20

  str1=linux

  str2=Linux

  #判斷數值是否相等

  if test $num1 -eq $num2

  then

  echo num1等于num2

  else

  echo num2不等于num2

  fi

  #判斷文件是否存在

  if test –f $filename

  then

  echo 文件存在

  else

  echo 文件不存在

  fi

  #判斷字符串是否相等

  if test $str1 == $str2

  then

  echo 字符串相等

  else

  echo 字符串不相等

  fi

2、[]判斷

通過test寫成的判斷語句是不是有點麻煩,我們可以使用[]來替代,以數值比較為例:

#!/bin/bash

  #條件判斷

  num1=10

  num2=20

  #判斷字符串是否相等

  if [ $num1 -eq $num2 ]

  then

  echo num1和num2相等

  else

  echo num1和num2不相等

  fi

使用[]進行文件和字符串的判斷與字符串大同小異,此處不再展開贅述。使用中括号來進行判斷要注意:在中括号中必須都要使用空格來分隔。

3、(())判斷

(())也是條件判斷的一種方式,可以參考[]判斷方法,進行替換即可;一般來說,雙層小括号(())支持标準的比較符運算,包括:== 、!= 、> 、>= 、< 、<=;中括号[]支持-eq、–ne、-gt 、–ge 、-lt 、-le

八、循環操作

常用的循環操作包括while、until和for,使用如下:

#!/bin/bash

  #條件判斷

  a=20

  #while循環,條件成立時,執行循環體

  while [ $a -eq 10 ];do

  ((i--));

  done;

  #until循環,條件表達式不成立的時候,執行循環體

  until (($a<0));do

  ((i--))

  done;

  for((i=0;i<=10;i ));do

  echo i

  done;

九、方法封裝

在複雜的腳本中,我們避免不了要定義方法,方便多出調用;使用如下:

#!/bin/bash

  #定義test方法,打印輸入值;當輸入值等于linux時,調用same方法

  read name

  function same(){

  echo "Your input is $name"

  }

  if [ $name = linux ]

  then

  same

  else

  echo 輸入錯誤

  fi

到此,我們就對shell編程有了一個初步的認識,是不是很簡單~,基本的使用方法都已經包含在上邊的介紹中了,後續就是通過日常的練習來加深對shell編程的認識和深入,以解放我們的雙手,提高工作效率,祝大家工作愉快!

請關注 私信回複:“測試”就可以免費拿到軟件測試學習資料還能拉你進軟件測試交流群。

linuxshell知識(LinuxShell編程編程入門從第一個Shell腳本開始吧)2

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved