Linux shell程式設計之bash變數

2021-07-25 05:11:37 字數 1728 閱讀 7867

bash變數

命名規則

必須以字母下劃線開頭,只能由字母下劃線數字組成。

長度不能超過255個字元

變數名在有效的範圍內必須唯一

在bash中,變數的預設型別都是字串

一 使用者自定義變數

使用者自定義的變數。區域性變數,只在當前shell有效。

格式:變數名=變數值

例如:x=5 # 等號兩邊不能有空格

y='hello world' # 如果變數值中有空格須用引號引起來。

呼叫:echo $x  

變數疊加:

x=1x="$x"23   或  x=$23

echo $x  # 輸出123

變數檢視:

set刪除變數:

unset 變數名  # 不加$

二 環境變數

全域性變數,在當前shell中和當前shell的子shell,子shell的子shell......中都有效

儲存的是和系統操作環境相關的資料。變數可以自定義,但是對系統生效的環境變數名和變數作用是固定的。

1、自定義乙個環境變數:

export 變數名=變數值    或  

變數名=變數值

export 變數名

檢視環境變數:

env   或  set

刪除環境變數:

unset 變數名  # 需要在變數宣告的shell中才可以刪除 在子shell中無法刪除

2、對系統起作用的環境變數:

2.1 $path  # 系統搜尋可執行檔案的路徑

臨時修改path: path="$path":/home/sh

永久修改須改配置檔案。

2.2 ps1變數:

\d  #顯示日期,格式為「星期 月 日」

\h #顯示完整的主機名。如預設主機名 「localhost.localdomain」

\t  #顯示24小時制時間,格式為 hh:mm:ss

\a #顯示24小時制時間,格式為 hh:mm

\u #顯示當前使用者名稱

\w #顯示當前所在目錄的完整名稱

\w #顯示當前所在目錄的最後乙個目錄

\$ #提示符。如果是root會顯示提示符# 普通使用者為$

用來修改提示符

ps1='[\u@\h \w]\$'   # 按需求從上述格式中取值

3、語系變數

locale    # 查詢當前系統語系

lang : 定義系統主語系

lc_all : 定義整體語系的變數

三 位置引數變數

主要用來向指令碼中傳遞引數或資料。變數名不能自定義,變數作用是固定的

位置引數變數

作用$n

n為數字,$0代表命令本身,$1-$9代表第一到第九個引數,十以上的引數需要用大括號包含,如$

$*這個變數代表命令列中所有的引數,$*把所有的引數看成乙個整體

$@這個變數代表命令列中所有的引數,不過$@把每個引數區分對待

$#這個引數代表命令列中所有引數的個數

四 預定義變數

是bash中已經定義好的變數,變數名不能自定義,變數的作用也是固定的。

預定義變數

作用$?

最後一次執行的命令的返回狀態。如果這個變數的值為0,證明上乙個命令正確執行;如果這個變數的值為非0(具體是哪個數由命令自己決定),則證明上乙個命令執行不正確了。

$$當前程序的程序號(pid)

$!後台執行的最後乙個程序的程序號(pid)

linux shell程式設計之 if語句

一 語句格式 一行中的寫法 if test commands then consequent commands fi 多行的寫法 if 條件 then command else command fi 基本語法記住亮點 1 按照漢語的方式記憶 如果 if 那麼 then 就 否則 else 就 2 記...

Linux shell程式設計之awk sed用法詳解

awk的用法 1.awk的使用 呼叫方式 1.命令列方式 2.將所有awk命令插入乙個檔案,並使awk程式可執行,然後使awk命令直譯器作為指令碼的首行,以便通過鍵入指令碼名稱來呼叫它。3.將所有的awk命令插入乙個單獨檔案,然後呼叫。選項說明 f 域符號 預設為空格 f 指明awk指令碼 2.模式...

LINUX SHELL程式設計之遠端拷貝

使用expect,進行遠端拷貝 1.首先確認你的系統安裝有expect which expect 如果顯示如下,說明已經安裝完expect,如果沒有執行2 usr bin expect 2.yum install expect 3.遠端拷貝 usr bin expect f set password...