中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

企業(yè)網(wǎng)站模板優(yōu)化寧波seo排名外包公司

企業(yè)網(wǎng)站模板優(yōu)化,寧波seo排名外包公司,政府網(wǎng)站建設(shè)調(diào)查表,中山網(wǎng)站建設(shè)文化文章目錄 第一章 Shell編程【重點(diǎn)】1.1. Shell的概念介紹1.1.1. 命令解釋器4.1.1.2. Shell腳本 1.2. Shell編程規(guī)范1.2.1. 腳本文件的結(jié)構(gòu)1.2.2. 腳本文件的執(zhí)行 1.3. Shell的變量1.3.1. 變量的用法1.3.2. 變量的分類1.3.3. 局部變量1.3.4. 環(huán)境變量1.3.5. 位置參數(shù)變量1.3.6. …

文章目錄

      • 第一章 Shell編程【重點(diǎn)】
        • 1.1. Shell的概念介紹
          • 1.1.1. 命令解釋器
          • 4.1.1.2. Shell腳本
        • 1.2. Shell編程規(guī)范
          • 1.2.1. 腳本文件的結(jié)構(gòu)
          • 1.2.2. 腳本文件的執(zhí)行
        • 1.3. Shell的變量
          • 1.3.1. 變量的用法
          • 1.3.2. 變量的分類
          • 1.3.3. 局部變量
          • 1.3.4. 環(huán)境變量
          • 1.3.5. 位置參數(shù)變量
          • 1.3.6. 預(yù)定義變量
        • 1.4. read命令
          • 1.4.1. 命令說明
          • 1.4.2. read的實(shí)例
          • 1.4.3. 注意事項(xiàng)
        • 1.5. 運(yùn)算
          • 1.5.1. expr
          • 1.5.2. 示例
          • 1.5.3. {}
        • 1.6. 字符串
          • 1.6.1. 字符串的腳本用法
          • 1.6.2. 字符串的長度
        • 1.7. Shell數(shù)組
          • 1.7.1. 數(shù)組的使用規(guī)則
          • 1.7.2. 數(shù)組的定義
          • 1.7.3. 讀取數(shù)組
        • 1.8. test測(cè)試命令

第一章 Shell編程【重點(diǎn)】

1.1. Shell的概念介紹

1.1.1. 命令解釋器

Shell是命令解釋器(command interpreter),是Unix操作系統(tǒng)的用戶接口,程序從用戶接口得到輸入信息,shell將用戶程序及其輸入翻譯成操作系統(tǒng)內(nèi)核(kernel)能夠識(shí)別的指令,并且操作系統(tǒng)內(nèi)核執(zhí)行完將返回的輸出通過shell再呈現(xiàn)給用戶,下圖所示用戶、shell和操作系統(tǒng)的關(guān)系:

image-20210411153245838

一個(gè)系統(tǒng)可以存在多個(gè)shell,可以通過cat /etc/shells命令查看系統(tǒng)中安裝的shell。

[root@qianfeng01 ~]# cat /etc/shells/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

操作系統(tǒng)內(nèi)核(kernel)與shell是獨(dú)立的套件,而且都可被替換;不同的操作系統(tǒng)使用不同的shell; 同一個(gè)kernel之上可以使用不同的shell。 也可以查看當(dāng)前shell環(huán)境是哪種:

[root@qianfeng01 ~]# echo $SHELL
4.1.1.2. Shell腳本

Shell也是一門編程語言,即shell腳本。在此腳本中,我們可以使用一些編程語法來進(jìn)行一些任務(wù)操作。 如:變量、類型、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、函數(shù)等語法。 在shell腳本里,必須指定一種shell命令解釋器。

1.2. Shell編程規(guī)范

1.2.1. 腳本文件的結(jié)構(gòu)
1 文件的擴(kuò)展名必須是.sh
2 文件的首行必須使用#!       指定script的運(yùn)行shell環(huán)境(即腳本解釋器)如:#!/bin/bash
3 腳本里的行注釋符號(hào)為#
4 指令、選項(xiàng)、參數(shù)之間即使有多個(gè)空格仍會(huì)被視為一個(gè)空格。
5 tab鍵形成的空白也被視為一個(gè)空格鍵
6 空白行會(huì)被忽略
1.2.2. 腳本文件的執(zhí)行
  • 使用bash程序調(diào)用執(zhí)行,只需要有讀權(quán)限即可

    [root@qianfeng01 ~]# sh *.sh      
    或者
    [root@qianfeng01 ~]# bash *.sh
    
  • 直接寫script,必須要有rx權(quán)限才行

    [root@qianfeng01 ~]# ./*.sh         
    絕對(duì)路徑寫法: /hadoop/*.sh
    相對(duì)路徑寫法: ./*.sh
    
  • 借助變量PATH功能

    將*.sh放入~/bin目錄下,因?yàn)镻ATH里拼接了~/bin目錄。
    注意:~/bin目錄必須自行創(chuàng)建
    

1.3. Shell的變量

1.3.1. 變量的用法
1. 變量的命名規(guī)則   - 命名只能使用英文字母,數(shù)字和下劃線。首個(gè)字符不能以數(shù)字開頭。- 字母習(xí)慣使用大寫。- 中間不能有空格。- 不能使用標(biāo)點(diǎn)符號(hào)。- 不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)2. 變量的使用規(guī)則- 直接定義變量名稱,沒有類型需要強(qiáng)調(diào)(類似于數(shù)學(xué)中:x=1,y=2,z=x+y)- 賦值時(shí),"="前后不能有空格- 命令的執(zhí)行結(jié)果賦值給變量時(shí),使用反單引號(hào)      如:TIME=`date`- 調(diào)用變量時(shí),必須使用$       格式: $變量名    或    ${變量名}
1.3.2. 變量的分類

Linux Shell中的變量可以分為三種變量: 局部變量環(huán)境變量、特殊變量??梢酝ㄟ^set命令查看系統(tǒng)中存在的所有變量

局部變量:也就是用戶自定義的變量,在腳本中或命令中定義
環(huán)境變量:保存和系統(tǒng)操作環(huán)境相關(guān)的數(shù)據(jù)。$HOME、$PWD、$SHELL、$USER等等
特殊變量:一種是位置參數(shù)變量:主要用來向腳本中傳遞參數(shù)或數(shù)據(jù),變量名不能自定義,變量作用固定。一種是預(yù)定義變量:是Bash中已經(jīng)定義好的變量,變量名不能自定義,變量作用也是固定的。
1.3.3. 局部變量

用戶自定義的變量由字母或下劃線開頭,由字母,數(shù)字或下劃線序列組成,并且大小寫字母意義不同,變量名長度沒有限制。

  • 定義變量

    習(xí)慣上用大寫字母來命名變量。變量名以字母表示的字符開頭,不能用數(shù)字。
    
  • 調(diào)用變量

    在使用變量時(shí),要在變量名前加上前綴“$”.
    使用echo 命令查看變量值
    eg: [root@qianfeng01 ~]# echo $A
    
  • 變量賦值

    • 第一種: 定義時(shí)賦值

      # 變量=值
      # 注意: 在上述的定義方式中,等號(hào)的左右兩側(cè)不能有空格
      # eg:
      [root@qianfeng01 ~]# STR="hello qianfeng"
      [root@qianfeng01 ~]# A=9
      
    • 第二種: 將一個(gè)命令的執(zhí)行結(jié)果給變量賦值

      [root@qianfeng01 ~]# A=`ls -la` 反引號(hào),運(yùn)行里面的命令,并把結(jié)果返回給變量A
      [root@qianfeng01 ~]# A=$(ls -la) 等價(jià)于反引號(hào)
      [root@qianfeng01 ~]# AA=$((4+5))
      [root@qianfeng01 ~]# BB=`expr 4 + 5 `
      
    • 第三種: 將一個(gè)變量的值賦給另一個(gè)變量

      [root@qianfeng01 ~]# A=$STR
      
  • 變量疊加

    # 變量疊加,就是將兩個(gè)字符串變量的值疊加在一起,類似于Java中的字符串拼接操作。[root@qianfeng01 ~]# A=123
    [root@qianfeng01 ~]# C="$A"456
    [root@qianfeng01 ~]# D=${A}789# 單引號(hào)和雙引號(hào)的區(qū)別
    # 現(xiàn)象:單引號(hào)里的內(nèi)容會(huì)全部輸出,而雙引號(hào)里的內(nèi)容會(huì)有變化
    # 原因:單引號(hào)會(huì)將所有特殊字符脫意[root@qianfeng01 ~]# NUM=10    [root@qianfeng01 ~]# SUM="$NUM hehe"     
    [root@qianfeng01 ~]# echo $SUM     # 輸出10 hehe[root@qianfeng01 ~]# SUM2='$NUM hehe'     
    [root@qianfeng01 ~]# echo $SUM2    # 輸出$NUM hehe
    
  • 刪除變量

    # 刪除之前已經(jīng)定義過的變量,之后就無法再使用這個(gè)變量了。# 撤銷變量 A
    [root@qianfeng01 ~]# unset A 
    # 聲明靜態(tài)的變量 B=2 ,不能 unset
    [root@qianfeng01 ~]# readonly B=2 
    # 報(bào)錯(cuò): -bash: unset: B: cannot unset: readonly variable
    [root@qianfeng01 ~]# unset B
    
  • 注意事項(xiàng)

    關(guān)于局部變量的作用域的問題: 用戶自定義的局部變量,作用于僅為當(dāng)前的Shell環(huán)境。僅在當(dāng)前的Shell示例中有效,其他的Shell啟動(dòng)的程序不能訪問局部變量。

    [root@qianfeng01 ~]# echo '#!/bin/bash' > test.sh
    [root@qianfeng01 ~]# A=22
    [root@qianfeng01 ~]# echo 'echo $A' >> test.sh
    [root@qianfeng01 ~]# echo $A   結(jié)果:22
    [root@qianfeng01 ~]# bash test.sh   結(jié)果:打印為空,因?yàn)閎ash會(huì)開啟新的shell進(jìn)程
    
1.3.4. 環(huán)境變量

用戶自定義的局部變量,只能在當(dāng)前的Shell中生效,而環(huán)境變量會(huì)在當(dāng)前Shell和其所有的子Shell中生效。如果把環(huán)境變量寫入相應(yīng)的配置文件,那么這個(gè)環(huán)境變量就會(huì)在所有的Shell中生效。

作用域: 當(dāng)前的Shell以及所有的子Shell

聲明變量: export 變量名=變量值

定義環(huán)境變量的常見配置文件:

  • /etc/profile -> 針對(duì)系統(tǒng)所有的用戶生效,此文件應(yīng)用于所有用戶每次登錄系統(tǒng)時(shí)的環(huán)境變量定義。每次用戶登錄的時(shí)候,都會(huì)加載這個(gè)文件。
  • $HOME/.bash_profile -> 針對(duì)特定用戶生效,HOME/.bash_profile文件中的定義。
1.3.5. 位置參數(shù)變量
變量描述
0表示命令本身,9表示第1到第9個(gè)參數(shù),10以上的參數(shù)需要使用大括號(hào)包含,例如${10}
1 n"的形式輸出所有參數(shù)
1" “n” 的形式輸出所有參數(shù)
$#參數(shù)的個(gè)數(shù)
  • @ 的區(qū)別

    • 他們都表示傳遞給函數(shù)或腳本的所有參數(shù),不被雙引號(hào)包含時(shí),都以 "$1""$2""$3"..."$n"的形式輸出所有參數(shù)。
    • 當(dāng)他們被雙引號(hào)包含時(shí)
      • "$*"會(huì)將所有的參數(shù)作為一個(gè)整體,以 $1 $2 $3 ... $n 的形式輸出所有的參數(shù)。
      • "$@"會(huì)將各個(gè)參數(shù)分開,以 "$1""$2""$3"..."$n" 的形式輸出所有參數(shù)。
  • Shell腳本執(zhí)行測(cè)試

    # 執(zhí)行腳本 test1.sh 
    #!/bin/bash
    echo "test \$*"
    for i in $*
    doecho $i
    doneecho "test \$@"
    for i in $@
    doecho $i
    doneecho "test \"\$*\""
    for i in "$*"
    doecho $i
    doneecho "test \"\$@\""
    for i in "$@"
    doecho $i
    done輸出結(jié)果:
    [root@qianfeng01 ~]# sh test1.sh a b
    test $*
    a
    b
    test $@
    a
    b
    test "$*"
    a b
    test "$@"
    a
    b
    
1.3.6. 預(yù)定義變量
變量描述
$?執(zhí)行上一個(gè)命令的返回值。執(zhí)行成功,返回0;執(zhí)行失敗,返回非0
$$當(dāng)前進(jìn)程的進(jìn)程號(hào)(PID),即當(dāng)前腳本執(zhí)行時(shí)生成的進(jìn)程號(hào)
$!后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程號(hào)(PID),最近一個(gè)被放入后臺(tái)執(zhí)行的進(jìn)程
  • 測(cè)試 $?

    [root@qianfeng01 ~]# ls ; echo $?
    # 分析: 這里的意思是依次順序執(zhí)行兩個(gè)命令
    # 如果分號(hào)前的命令可以執(zhí)行,$?會(huì)返回0; 否則會(huì)返回非0的一個(gè)數(shù)字
    
  • 測(cè)試 $$

    [root@qianfeng01 ~]# pwd > /dev/null
    [root@qianfeng01 ~]# echo $$
    
  • 測(cè)試 $!

    [root@qianfeng01 ~]# ls /etc > /dev/null &
    [root@qianfeng01 ~]# echo $!
    

1.4. read命令

1.4.1. 命令說明
read命令,可以從控制臺(tái)讀取用戶輸入的內(nèi)容,并且給指定的變量進(jìn)行賦值。
命令的基本格式為: read [option] variable
常見的option:
-p : 提示語句,在輸入之前,給用戶提示的信息
-n : 限制輸入的字符數(shù)量,到達(dá)這個(gè)數(shù)量的字符的時(shí)候,會(huì)自動(dòng)的停止輸入
-t : 等待時(shí)間,單位為秒。當(dāng)?shù)竭_(dá)這個(gè)等待時(shí)間的時(shí)候,會(huì)自動(dòng)的結(jié)束輸入,并且不會(huì)讀取任何輸入的內(nèi)容!即,輸入操作且回車,必須在指定的時(shí)間內(nèi)完成。
-s : 隱藏輸入的內(nèi)容。在控制臺(tái)上不顯示任何輸入的內(nèi)容,常見于密碼的輸入
1.4.2. read的實(shí)例
[root@qianfeng01 ~]# read -t 30 -p "please input your name:"  NAME[root@qianfeng01 ~]# echo $NAME[root@qianfeng01 ~]# read -s -p "please input your age :"  AGE[root@qianfeng01 ~]# echo $AGE  注意:如果隱藏輸入,這里的結(jié)果是看不到的[root@qianfeng01 ~]# read -n 1 -p "please input your sex  [M/F]:"  GENDER[root@qianfeng01 ~]# echo $GENDER
1.4.3. 注意事項(xiàng)
  • 在輸入的時(shí)候,如果輸錯(cuò)了需要?jiǎng)h除的時(shí)候,執(zhí)行ctrl+delete
  • 符號(hào)不要輸入中文
  • 變量與之前的內(nèi)容需要保持有空格

1.5. 運(yùn)算

1.5.1. expr
格式 :expr m + n 或$((m+n)) 注意expr與運(yùn)算符和變量間要有空格  sum=$((m+n))=與$之間沒有空格expr命令:對(duì)整數(shù)型變量進(jìn)行算術(shù)運(yùn)算(注意:運(yùn)算符前后必須要有空格)[root@qianfeng01 ~]# expr 3 + 5 [root@qianfeng01 ~]# expr 3 – 5[root@qianfeng01 ~]# echo `expr 10 / 3`     10/3的結(jié)果為3,因?yàn)槭侨≌?span id="vxwlu0yf4"    class="token punctuation">[root@qianfeng01 ~]# expr  3  \* 10     \ 是轉(zhuǎn)義符
1.5.2. 示例

計(jì)算(2 +3 )×4 的值

1 .分步計(jì)算

[root@qianfeng01 ~]# S=`expr 2 + 3`[root@qianfeng01 ~]# expr $S  \* 4

2.一步完成計(jì)算

[root@qianfeng01 ~]# expr  `expr 2 + 3` \* 4
[root@qianfeng01 ~]# S=`expr  \` expr 2 + 3  \`  \* 4`
[root@qianfeng01 ~]# echo $S[root@qianfeng01 ~]# echo $(((2 + 3) * 4))
1.5.3. {}
$()與${}的區(qū)別$( )的用途和反引號(hào)``一樣,用來表示優(yōu)先執(zhí)行的命令eg: [root@qianfeng01 ~]# echo $(ls /root)${ } 就是取變量了  eg:[root@qianfeng01 ~]# echo ${PATH}$((運(yùn)算內(nèi)容)) 適用于數(shù)值運(yùn)算eg: [root@qianfeng01 ~]# echo $((3+1*4))

1.6. 字符串

1.6.1. 字符串的腳本用法
- 字符串不能單獨(dú)出現(xiàn),必須要配合變量。
- 字符串可以使用單引號(hào)['  '],也可以使用雙引號(hào)[" "],也可以不用引號(hào)
- 單引號(hào)內(nèi)的任何字符沒有任何意義,都會(huì)原樣輸出
- 單引號(hào)內(nèi)使用變量是無效的,單引號(hào)內(nèi)不能出現(xiàn)單引號(hào)
- 雙引號(hào)內(nèi)可以使用變量
- 雙引號(hào)內(nèi)可以使用轉(zhuǎn)義字符
- 在字符串拼接操作時(shí),我們可以進(jìn)行無縫拼接,或者是在雙引號(hào)里使用變量
1.6.2. 字符串的長度
可以使用${#variable} 或者 expr length "${variable}"。因?yàn)閑xpr是指令,所以別忘記使用反單引號(hào)``或者是$()直接看案例:[root@qianfeng01 ~]# vim test3.sh#!/bin/bash
var='welcome to china'
length1=${#var}
length2=$(expr length "${var}")  <==$()寫法
length3=`expr length "$var"`     <==反單引號(hào)寫法

1.7. Shell數(shù)組

1.7.1. 數(shù)組的使用規(guī)則
- 在/bin/bash這個(gè)shell中,只有一維數(shù)組的概念,并且不限定數(shù)組的長度。
- 數(shù)組的元素下標(biāo)是從0開始的,
- 獲取數(shù)組的元素要使用下標(biāo)
- 下標(biāo)使用不當(dāng),會(huì)報(bào)錯(cuò)
1.7.2. 數(shù)組的定義
定義格式: variable=(值1  值2    …  值n)   
注意:元素之間除了使用空格作為分隔符,還可以使用換行符?;蛘?name[0]=值1     
name[1]=值2     
…     
name[n]=值n
1.7.3. 讀取數(shù)組
${variable[index]}: 讀取index索引上的元素
${variable[*]}或者${variable[@]}:讀取所有元素  
${#variable[*]}或者${#variable[@]} :  讀取數(shù)組的長度  
[root@qianfeng01 ~]# vim test3.sh#!/bin/bash
citys=(cc sh bj sd hlj)
hobby[0]=book
hobby[1]=film
hobby[2]=musicecho ${citys[0]}      <==cc
echo ${hobby[*]}      <==book film music
echo ${#hobby[@]}     <==3
[root@qianfeng01 ~]# bash test3.sh

1.8. test測(cè)試命令

image-20210411163134487

  • 通常test命令不單獨(dú)使用,而是與if語句連用,或是放在循環(huán)結(jié)構(gòu)中

    # && 表示測(cè)試通過的處理邏輯
    # || 表示測(cè)試不通過的處理邏輯
    [root@qianfeng01 ~]# test -e file && echo "exists" || echo "not exists"
    
  • 判斷符號(hào)[]

    除了好用的test之外,我們還可以使用中括號(hào)來進(jìn)行檢測(cè)條件是否成立

    [root@qianfeng01 ~]# [  -r  filename ]      檢測(cè)filename是否有可讀權(quán)限
    [root@qianfeng01 ~]# [  -f  filename -a  -r  filename ]     檢測(cè)filename是不是普通文件并且有可讀權(quán)限
    
http://www.risenshineclean.com/news/40560.html

相關(guān)文章:

  • 北京網(wǎng)站備案號(hào)qq空間刷贊網(wǎng)站推廣
  • 疫情防控最新消息數(shù)據(jù)網(wǎng)站怎么優(yōu)化
  • 鎮(zhèn)江網(wǎng)站建設(shè)遠(yuǎn)航科技網(wǎng)站seo推廣營銷
  • 網(wǎng)站建設(shè)公司特色武漢seo人才
  • 新網(wǎng)站百度收錄北京疫情又嚴(yán)重了
  • 做二手衣服的網(wǎng)站有哪些關(guān)鍵詞歌詞圖片
  • wordpress 微信掃碼seo排名優(yōu)化推廣報(bào)價(jià)
  • 十大永久免費(fèi)污染軟件東莞seo搜索
  • 建設(shè)銀行的投訴網(wǎng)站推廣文案
  • 設(shè)計(jì)師個(gè)人網(wǎng)站網(wǎng)絡(luò)推廣渠道公司
  • 365元做網(wǎng)站網(wǎng)絡(luò)營銷的發(fā)展趨勢(shì)
  • 代做安裝預(yù)算的網(wǎng)站青島網(wǎng)站建設(shè)
  • 怎么自己的電腦做網(wǎng)站服務(wù)器百度廣告代理商
  • 網(wǎng)站運(yùn)營推廣方案云南百度公司
  • 網(wǎng)站ico圖標(biāo) 代碼搜索引擎排名中國
  • 上的網(wǎng)站app上海百度公司總部
  • 女同性怎么做的視頻網(wǎng)站軟文有哪些發(fā)布平臺(tái)
  • 合肥seo優(yōu)化安徽網(wǎng)站關(guān)鍵詞優(yōu)化
  • 虛擬主機(jī)網(wǎng)站淘客網(wǎng)站建設(shè)b站推廣軟件
  • 網(wǎng)站備案之前需要建好網(wǎng)站嗎windows優(yōu)化大師要會(huì)員
  • 教育網(wǎng)站怎么做如何推廣一個(gè)項(xiàng)目
  • 長春企業(yè)網(wǎng)站模板建站域名解析ip
  • css做購物網(wǎng)站的分類目錄搜索引擎優(yōu)化搜索優(yōu)化
  • 做地方旅游網(wǎng)站目的意義正規(guī)的教育培訓(xùn)機(jī)構(gòu)有哪些
  • 中華人民共和國城鄉(xiāng)與建設(shè)部網(wǎng)站長沙seo優(yōu)化推薦
  • ae有么有做gif的網(wǎng)站構(gòu)建新發(fā)展格局
  • 網(wǎng)站開發(fā)架設(shè)baidu百度
  • 如何打開本地安裝的WORDPRESS網(wǎng)站查詢工具seo
  • 合肥建設(shè)學(xué)校官網(wǎng)網(wǎng)站網(wǎng)站關(guān)鍵詞挖掘
  • html5移動(dòng)網(wǎng)站模板貴港網(wǎng)站seo