shell筆記

在學習的時候整理的零散筆記

shell就是解決我們運維工作中經常重復性的工作,我們將工作中每天要干的重復性的工作放在一個腳本中,然后運行,解決了大部分的重復性的工作,可以做更多的其它事情。

寫shell的標準程序

*.sh ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 腳本的名字后面一般要加.sh的后綴

#!/bin/bash ? ? ? ? ? ? ? ? ? ? ? ? ?你用什么是什么shell寫的腳本

#Autor : xxx ? ? ? ? ? ? ? ? ? ? ? ? 你的名字

#Data:xxxx ? ? ? ? ? ? ? ? ? ? ? ? ? 創建腳本的時間

#Descripton:xxxx ? ? ? ? ? ? ? ?描述這個腳本是干什么用的

運行shell腳本的方法

1.bash ?*.sh ? ? ? ? ? ? ? ? ? ? ? ? ? 用bash ?執行

2.chmod +x *.sh ? ? ? ? ? ? ? ? ?給shell腳本加執行權限

3.cat ?*.sh |bash ? ? ? ? ? ? ? ? ? ?加管道符執行

4./data/*.sh ? ? ? ? ? ? ? ? ? ? ? ? 用絕對路徑執行

5.http://ip/*.sh|bash ? ? ? ? 遠程調用服務器的腳本執行

6.將腳本放到任意一個$PATH變量里面的路徑下面

 

bash -n ?*.sh ? ? ? ? ? ? ? ? ? ? ? ? 檢查腳本中的語法錯誤

bash ?-x ?*.sh ? ? ? ? ? ? ? ? ? ? ? ?跟蹤調試腳本

如果命令能識別變量就不用加$,如果不能就要加$

變量分為系統自帶的只讀變量和自定義的變量,系統自帶的只讀變量是不可更改的

自定義變量命名規則

1.不能使用系統的保留名字

2.只能使用數字,字母還有下劃線,但是數字不能開頭

3.設置變量的名字要見名知義

4.統一命名規則,大駝峰,就是所有的單詞首字母大寫

 

bash中的變量一般分為:局部變量 ;環境(全局)變量;本地變量;位置變量;特殊變量

局部變量:

局部變量只能對當前shell執行,不能在其它shell進程執行,不能在父進程和子進程執行

例:name=xixi ? ? ? ? ? ? ? ?給xixi設置一個變量名字為$name

name=$USER ? ? ? ? ?可以引用變量

name=`hostname` ?可以引用命令

set :可以查看已經定義的所有變量

unset 變量 ?:刪除變量,當我們執行完shell的時候會留下許多不用的垃圾變量,當過去很長的時間會在系統內留下許多的垃圾變量,會大量的占用系統的內存,建議用完變量以后就刪除。

echo $$ ?可以查看當前的進程編號

echo $PPTD 可以查看父進程的編號

pstree -p ? ? ? 可以查看所有進程的編號

 

環境(全局)變量

全局變量能傳到子進程,但是不能傳到父進程,在變量附加完成以后要聲明這個是全局變量 export

例 :name=xixi ? ? export $name ? 或 ?export ?name=xixi

env可以查看變量

 

環境變量

環境變量是bash自己建的特殊變量,能直接調用

例:$UID ?$PATH $SHELL ……

 

只讀變量和位置變量

只讀變量是不能修改和刪除的 ?readonly -p ?或declare -r 查看只讀變量

readonly ? name=xixi ? 聲明一個只讀變量 ,只讀變量的生命周期一般是當前進程的結束

位置變量是讓寫的腳本更靈活,加不同的參數,執行不同的功能

在腳本代碼中調用通過命令行傳遞給腳本的參數

例:$1 ? $2 ? $3 …. 分別對應的a ? b ? c ?….. ? 它對應的可以是文件也可以對應目錄

$* :所有字符的參數

$@:所有字符的參數

$#:所有參數的個數

$0 :代表腳本的名字

shift:換位符,當一個程序執行完成以后整體的參數會往左移,默認移一位,也可以更改,也就是說$1對應的a執行完成以后,會自動的往左移一位,$1對應的變成b繼續執行

 

退出狀態

echo $? ?查看腳本成不成功

0代表成功,1-255代表失敗

echo $? 的判斷是移最后一條命令的結果為準,成功的話返回值是0,不成功返回值是1-255

返回的值也可以修改 例:exit 10 ?就是將他返回的值改成了10 ,以后返回的特定的值代表特定的內容

 

算術運算

bash中的算術運算 let

例: 賦值 ?a=10 ? ? b=20

let ? c=a+b ? ? ?或 ? ?c=$[a+b] ? ? ? 或 c=((a+b))

可以用 echo $c 查看結果

 

邏輯運算

&與并且and | 或者 or

0&0 =0 假與假 是假

0&1 =0 假與真 是假

1&0 =0 真與假 是假

1&1= 1 真與真 是真

 

0 | 0 = 0 假或假 是假

0 | 1 = 1 假或真 是真

1 | 0 = 1 真或 假 是真

1 | 1 = 1 真或真 是真

短路與 && 短路或 | |

0&&0 =0

0&&1 =0

1&&0 =0

1&&1= 1

chdm1 && chdm2 如果命令1為假 ,命令2 不需要執行 反之命令1為真,需要執行命令2

chdm1 | | chdm2 如果命令1為真,命令2不需要執行 反之命令1為假,命令2不需要執行

 

條件測試

test 判斷表達式是否成立

?qwe=qqq

?asd=www

?test $qwe = $asd

?echo $?

判斷變量qwe和asd變量的值是否相同,相同得0,不同的1到255

或 ??[ ?$qwe = $asd ?]

 

判斷字符串的長度

[ ? -z ? $var ?] ? 判斷var的長度是不是為0,0就是沒有存東西

[ -n $var ] 或 [ $var ] 判斷var是不是非空,0代表非空里面有東西,其他代表空

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95957

(0)
周亞飛周亞飛
上一篇 2018-04-14
下一篇 2018-04-14

相關推薦

  • shell腳本基礎知識

    1.shell腳本是一種非編譯,弱類型的語言,解釋型語言弱類型 不需要聲明直接使用解釋型 執行之時,不需編譯直接執行 2.shell的作用:解釋執行用戶的命令;用戶輸入一條命令,shell就解釋一條,交互式;用戶事先寫一個shell腳本(Script),其中有很多命令,讓shell一次把這些命令執行完,而不用一條一條地敲命令,批處理(Batch ) 3.解釋…

    2018-05-14
  • 課堂筆記

    cat— 文本文件 1.cat/etc/centos/—release看到發行版名稱 lsb—releas—a ? ? ? ? ? ? ? ? ?? 看到發行版名稱 (centors? 7上如果看不到發行版名稱,并不是沒有,而是沒有安裝對映的軟件,生產環境中都是最小化安裝,默認安裝是最小文件) 2.sz/etc/centos—release傳到w…

    Linux筆記 2018-07-24
  • MySQL數據庫服務

    MySQL數據庫的安裝

    2018-06-12
  • 計算機基礎與linux基礎

    描述計算機的組成及功能 按系列羅列linux的發行版,并描述不同發行版之間的聯系與區別 描述linux的哲學思想,并按照自己的理解對其解釋性描述 說明Linux系統上命令的使用格式;詳細介紹ifconfig.echo,tty,startx,export,pwd,history,shutdown,poweroff,reboot,hwclock,date命令的使…

    Linux筆記 2018-06-19
  • Linux用戶與組管理詳解

    在linux系統上,用戶管理是基于用戶名和密碼的方式進行資源的分配,了解和掌握用戶與組的管理是從事運維工作所必須具備的能力,也是將來從事運維行業的重要工作之一。

    2018-04-03
  • W2-文件操作

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件操作命令 cp命令:copy 用于拷貝文件或目錄至目標位置,語法: 單源復制:cp [OPTION]… [-T] SOURCE DEST 多源復制:cp [OPTION]… SOURCE… DIRECTORY cp [OPTION]&#823…

    2018-07-01
欧美性久久久久