Linux-shell程式設計基礎-變數
egrep及擴充套件的正則表示式
egrep = grep -E
擴充套件正則表示式的元字元
字元匹配:
. [] [^]
次數匹配:
* :任意次
?:0或1次
+ :1次或多次
{m}:匹配m次
{m,n}:至少m至多n次
錨定:
^ $ \<, \b詞首 \>,\b詞尾
分組:
()
後向引用:\1 , \2
或者:
a|b
fgrep:“快速搜尋機制”不支援正則表示式,僅僅找給定的字串
bash的基礎特性:
變數型別:
資料儲存格式、儲存空間大小,參與運算種類
強型別:定義變數時必須指定型別,參與運算必須符合型別要求
弱型別:無需指定型別,預設均為字元型,參與運算會自動進行隱式型別轉換
bash中變數的種類:
根據變數的生效範圍等標準
本地變數:生效範圍為當前shell程序,對其他程序(包括子shell)都無效
環境變數:生效範圍為當前shell程序及其子程序
區域性變數: 生效範圍為當前shell程序中某程式碼片段(通常指函式)
位置變數:$1,$2,.. 來表示,用於讓指令碼在指令碼程式碼中呼叫通過命令列傳遞給它的引數
特殊變數:$? 返回狀態 $0命令本身 $* [email protected] &#
本地變數:
變數賦值:name=’value’
可以使用引用
value:
(1).可以是直接字串 name=”username”
(2).可以是變數引用
(3).可以命令引用 name=`COMMAND`(反引號) , name=$(COMMAND)
變數引用:${name} , $name
“”:弱引用,其中的變數引用會被替換為變數值
‘’:強引用,保持原字串
顯示已定義的所有變數:set
銷燬變數:unset name
環境變數:
變數宣告、賦值
export name=VALUE
declare -x name=VALUE 匯出變數
變數引用:$name , $(name)
顯示所有環境變數:
export env printenv
銷魂變數:
unset name
bash有許多內建的環境變數:
變數命名法則:
1.不能使用保留字
2.只能使用數字、字母及下劃線,且不能以數字開頭
3.見名知義
位置變數:
在指令碼程式碼中呼叫通過命令列傳遞給指令碼的引數
$1 , $2 .. 對應呼叫第1、第2等引數
shift [n] 輪換操作
$0 : 命令本身
$*: 傳遞給指令碼的所有引數(總體當做一個字串)
[email protected]: 傳遞給指令碼的所有引數(分別當做一個字串)
$#: 傳遞給指令碼的引數個數
例項:判斷給出的檔案的行數
#!/bin/bash
linecount = “$(wc -l $1 | cut -d ‘ ’ -f1)”
echo “$1 has $linecount lines.”
02
bash 配置檔案
按生效範圍劃分為兩類:
全域性配置:
/etc/profile
/etc/bashrc
個人配置:
~/.bash_profile
~/.bashrc
功能:
(1)定義命令別名
(2)定義本地變數
按功能劃分為兩類
profile類:為互動式登入的shell提供配置
bashrc類:為非互動式登入的shell提供配置
shell登入:
互動式登入:
直接通過終端輸入賬號密碼登入
使用“su - UserName” 切換的使用者
讀取順序: /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile -->~/.bashrc --> /etc/bashrc
非互動式登入:
su UserName
圖形介面下開啟的終端
執行指令碼
讀取順序: ~/.bash_profile -->~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
編輯配置檔案定義的新配置的生效方式:
(1)重新啟動shell程序
(2)使用source 或.命令程序
問題:
1.定義對所有使用者都生效的別名? 定義在 /etc/bashrc
2.讓使用者的PATH環境變數的值多出一個路徑 例:多出/uer/local/apache2/bin
管理員
所有
bash中的算術運算:
(1) let var=算術表示式
(2) var=$[算術表示式]
(3) var=$((算術表示式))
(4) var=$(expr arg1 arg2 arg3 ...)
注:* 符號有時需轉義
bash有內建的隨機數生成器:$RANDOM
增強型賦值:
+= ,-=,*=,/+ , %=
條件測試:
判斷某需求是否滿足,需要由測試機制來實現
注:專用的測試表達式,需要由測試命令輔助完成測試結果
hash的測試型別
數值測試:
-gt : 否大於 -ge:是否大於等於
-eq: 是否等於 -ne:是否不等於
字串測試:
==:是否等於
>: 是否大於
!=: 是否不等於
~=: 左側字串是否能夠被右側的模式所匹配
-z: “STRING”: 測試字串是否為空,空為真,不空為假
-n: 反之
注:用於字串比較時,用到的字串都應該加引號””.
檔案測試:
bash自定義退出狀態碼:
exit[n]: 自定義退出狀態碼:
注:指令碼中一旦遇到exit命令,指令碼會立即終止,終止退出狀態碼取決於exit命令後面的數字
如果未給指令碼指定退出狀態碼,整個指令碼的退出狀態碼,取決於指令碼中執行的最後一條命令的狀態碼。
相關推薦
Linux-shell程式設計基礎-變數
egrep及擴充套件的正則表示式 egrep = grep -E 擴充套件正則表示式的元字元 字元匹配: . [] [^] 次數匹配: * :任意次 ?:0或1次 + :1次或多次 {m}:匹配m次 {m,n}:至少m至多n次 錨定: ^ $ \<, \b詞首
kali Linux shell程式設計基礎到進階
前幾天在群裡聽他們說不會shell程式設計就不算會linux,嘿,就我這暴脾氣,學!幹!嘿嘿!行了,不扯犢子了,犢子要生氣了,最近學習了shell,感觸頗多,我也參考了其他大佬的經驗,看著視訊課,學了些許基礎,其實也就是那回事,認認真真踏踏實實的學,是能學到東西的,還有,要是自學的話,一定要能坐
Linux Shell 程式設計基礎
什麼是shell? 在Linux核心與使用者之間的直譯器程式 — 通常指/bin/bash(預設直譯器) — 負責向核心翻譯及傳達使用者/程式指令 —相當於作業系統的“外殼” 互動式 ——命令列 — 人工干預、智慧化程度高;
Linux Shell程式設計基礎入門
shell指令碼通常以#!/bin/bash 起始 指令碼的執行方式有兩種。 將指令碼名作為命令列引數: bash myScript.sh 授予指令碼執行許可權,將其變為可執行檔案: chmod 755 myScript.sh ./myScript.sh
Linux shell程式設計基礎
一、linux常用命令 1.修改機器名稱(實質上是機器的域名,相當於www.baidu.com):vim /etc/hostname 2.關閉機器:shutdown -h now 或者 reboot -h now來直接重啟 3.檢視ip地址:ifco
linux shell 程式設計基礎筆記
1.變數 命名規則,只能以數字,字母,下劃線開始 命名只能使用英文字母,數字和下劃線,首個字元不能以數字開頭。 中間不能有空格,可以使用下劃線(_)。 不能使用標點符號。 不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字) 舉例說明 RUNOOB LD_LI
Linux Shell 程式設計基礎詳解——吐血整理,牆裂推薦!
#第一部分:Linux Shell 簡介 Shell 是一個用 C 語言編寫的程式,它是使用者使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程式設計語言。 Shell 是指一種應用程式,這個應用程式提供了一個介面,使用者通過這個介面訪問作業系統核心的服務。 Ken Thompson 的 sh
Linux常用命令和Shell程式設計基礎
目錄相關 cd - .與.. 分別表示當前目錄和父目錄 - ~與$HOME 都是指當前使用者的主目錄 - cd – 切換到上一次所在的目錄(不一定是父目錄) pwd - pwd 顯示當前目錄 - $PWD與$OLDPWD 兩個變量表示當前目錄和上一次所在的目錄 ls - ls -rtl 檢視
Linux學習之shell 程式設計基礎(二)
一、bash環境變數 HOME、MAIL、SHELL、PATH 等,環境變數大都用大寫字母組成 [[email protected] dalianmao]# echo $SHELL /bin/bash [[email protected] dalianmao]# echo
Linux學習之shell 程式設計基礎(一)
一、linux中經常和正則表示式聯合使用的工具 grep sed awk(自己去研究吧). 二,以grep為例,有以下正則操作 特殊符號彙總 特殊符號 代表意義 [:alnum:] 代表英文
Linux入門小抄-part5-Shell程式設計基礎--練習
1、列印9*9乘法表 示例程式碼: #!/bin/bash for((i=1;i<=9;++i)) do for((j=1;j<=i;j++)) do echo -ne "$i*$j=$((i*j))\t" done echo done
Linux高階程式設計基礎——程序之檔案的環境變數
程序之檔案的環境變數 // 題目: 1.輸出檔案的環境變數的值 2.將環境變數的值設為張三 3.將環境變數的值改為李四 #include <stdio.h> #include <stdlib.h> int main() { char *p; if((p=g
linux中的shell程式設計之變數
shell程式設計主要是為了簡化linux系統管理的。 shell中的變數是一種弱型別的變數,c,java等語言是一種強型別的語言。 linux中的所有的變數預設型別都是字元型別的 零、bash變數的分類 bash變數的型別 變數型別
【linux】 --- shell程式設計基礎
什麼是shell??? Shell是使用者與核心進行互動操作的一種介面,目前最流行的Shell稱為bash Shell; Shell也是一門程式語言<解釋型的程式語言>,即shell指令碼; shell的執行方式??? 第一種: 首先賦予shell指令碼可執行許可權,
Linux學習之Shell程式設計——Bash變數——環境變數
1、環境變數,一部分是系統自定義的,還有一部分是使用者新增的,使用者可以改變其值 》環境變數是什麼? 使用者自定義變數只在當前的shell中生效,而環境變數會在當前Shell和這個Shell的所有子Shell當中生效。如果把環境變數寫入相應的配置檔案,那麼這個環境變數就會在所有的Shel
linux shell 語言基礎(3)shell 特殊位置變數、source、sh、bash、./執行指令碼的區別等
一、shell 特殊位置變數 $0 檔名及路徑 $1~$n 新增到Shell的各引數值。$1是第1引數、$2是第2引數… $* 傳遞給指令碼的所有引數列表如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。 $#新增到shell 引數個數 $
linux shell程式設計之利用環境變數IFS自定義分隔符
預設情況下,bash shell將空格符、製表符、換行符看作是欄位分隔符,如果遇到這些字元,bash shell就會認為字元後是一個新的欄位,這就帶來一種困擾:如果我們想處理包含空格、製表符、換行符的字元就會有麻煩了。bash提供了一種自定義分隔符的機制:環境變數IFS定義
linux —— shell 程式設計(整體框架與基礎筆記)
導讀 關於shell程式設計基礎的學習,網上有很多資源,如果在校圖書館應該也有一些教程,所以這裡對於零碎的基礎不做詳細記錄,而只是對一些常用的概念、命令與操作做一個簡要的記錄,以備方便查詢。 (本文所有語句的測試均在 Ubuntu 16.04 LTS 上進行) 1
linux 下shell 程式設計之變數及數學運算
1.shell中的變數是不分資料型別的,統一按照字串來儲存 2. bash shell只能支援數學整數運算(zsh可以支援浮點) 3.以下都是在bash shell 下進行的數學運算 方法一使用方括號進行基本的整數運算: #!/bin/bash var1=1 var2=2
Linux-shell程式設計之bash變數
Bash變數命名規則 必須以字母下劃線開頭,只能由字母下劃線數字組成。 長度不能超過255個字元 變數名在有效的範圍內必須唯一 在Bash中,變數的預設型別都是字串 一 使用者自定義變數 使用者自定