天天看點

一文掌握linux系統變量

作者:eis028

變量在寫shell腳本時會經常用到,有時要引用系統變量,有時又要自定義變量,是以把變量搞清楚是後續進行shell腳本學習的基礎;變量分為本地變量(作用範圍小,在目前系統的某個環境下才能生效),全局變量(作用範圍大),内置變量(指令解釋器内部已經定義好的變量);

1、本地變量(使用者變量):

:變量名=變量值,變量名='變量值',變量名="變量值";單引号不解析變量值中所包含的變量,即元字元輸出;雙引号會解析變量值中所包含的變量;

一文掌握linux系統變量

:變量名=`指令`,變量名=$(指令);先執行指令,把其結果指派給變量;Vwho=`whoami`,echo $Vwho;Vdir=$(pwd),echo $Vdir;

一文掌握linux系統變量

2、全局變量(系統變量):在目前系統下所有環境都能生效的變量;

顯示系統所有環境變量(或export -p);

顯示Shell預先定義好的變量(全局變量)以及使用者變量(本地變量)。

一文掌握linux系統變量

通過export将使用者變量導入到系統變量;;或;

export a;export b;export c

export -p

一文掌握linux系統變量

一些寫Shell腳本時常用的系統變量:

$SHELL 預設Shell

$HOME 目前使用者家目錄

$IFS 内部字段分隔符

$LANG 預設語言

$PATH 預設可執行程式路徑

$PWD 目前目錄

$UID 目前使用者ID

$USER 目前使用者

$HISTSIZE 曆史指令大小,可通過HISTTIMEFORMAT變量設定指令執行時間;

$RANDOM 随機生成一個0至32767的整數

$HOSTNAME 主機名

下面看下他們之間差別:

Shell程序的環境變量作用域是Shell程序,當export導入到系統變量時,則作用域是Shell程序及其Shell子程序。

檢視&删除變量:

:echo $變量名;echo "$變量名";echo ${變量名};echo "${變量名}";

:unset 變量名;

3、内置變量,shell内置變量,無需定義直接使用;man bash;

$0 擷取目前執行的shell腳本檔案名(自身名字);

$n 擷取目前執行shell腳本(或函數)時的指定位置參數的内容,即第n個參數值,$1-$n需要注意的是從第10個開始要用花括号調用,例如${10};

$# 擷取目前shell腳本執行時的參數總個數;

$? 擷取上一條指令執行後的狀态傳回值,0為執行成功,非0則為執行失敗;

例:位置變量$n,shift可對位置變量控制;

#!/bin/bash

echo "1: $1"

shift

echo "2: $2"

shift

echo "3: $3"

# bash test.sh a b c

1: a

2: c

3:

每執行一次shift指令,位置變量個數就會減一,而變量值則提前一位。shift n,可設定向前移動n位。

$* 所有的位置參數被看做一個字元串;

$@ 每個位置參數被看做獨立的字元串;

$ 目前程序PID;

$! 上一條運作背景程序的PID;

《例 》:

#!/bin/bash

echo 1:$1

echo 2:$2

echo 3:$3

echo a1:$*

echo a2:$@

echo p1:$

# bash test.sh hello world i love you

1:hello

2:world

3:i

a1:hello world i love you

a2:hello world i love you

p1:12185

繼續閱讀