1. 程式人生 > >Linux-shell程式設計基礎-變數

Linux-shell程式設計基礎-變數

egrep及擴充套件的正則表示式

egrep = grep -E

擴充套件正則表示式的元字元

字元匹配:

.  []  [^]

次數匹配:

* :任意次

?:01

+ 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).可以是變數引用

name =“$username”

(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有許多內建的環境變數:

PATH , SHELL , UID , HISTSIZE , PWD

變數命名法則:

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

linuxshell 程式設計變數及數學運算

1.shell中的變數是不分資料型別的,統一按照字串來儲存 2. bash shell只能支援數學整數運算(zsh可以支援浮點) 3.以下都是在bash shell 下進行的數學運算 方法一使用方括號進行基本的整數運算: #!/bin/bash var1=1 var2=2

Linux-shell程式設計之bash變數

Bash變數命名規則 必須以字母下劃線開頭,只能由字母下劃線數字組成。 長度不能超過255個字元 變數名在有效的範圍內必須唯一 在Bash中,變數的預設型別都是字串 一 使用者自定義變數 使用者自定