Linux編程之變量

Bash變量與變量分類

變量命名規則linux

  • 變量名必須以字母或下劃線打頭,名字中間只能由字母、數字和下劃線組成
  • 變量名的長度不得超過255個字符
  • 變量名在有效的範圍內必須是惟一的
  • 在Bash中,變量的默認類型都是字符串型shell

    變量按照存儲數據分類ubuntu

  • 字符串型
  • 整型
  • 浮點型
  • 日期型bash

shell變量分類dom

  • 用戶自定義變量:變量是自定義的
  • 環境變量:這種變量中主要保存的是系統操做環境相關的數據
    變量能夠自定義,可是對系統生效的環境變量名和變量做用是固定的
  • 位置參數變量:這種變量主要用來向腳本當中傳遞參數或數據的,
    變量名不能自定義,變量做用是固定的
  • 預約義變量:是Bash中已經定義好的變量,變量名不能自定義,變量做用也是固定的

Bash變量--用戶自定義變量

變量定義
變量名=變量值     # 等號左右不能有空格
如 name=tom

變量調用
echo $變量名

變量疊加
x=123
x="$x"456
x=${x}789

變量查看
set 
選項:
    -u 若是設置此選項,調用未聲明變量時會報錯(默認無任何提示)

變量刪除
unset 變量名
    如:unset name

Bash變量 -- 環境變量

環境變量與用戶自定義變量的區別
    用戶自定義變量只在當前的shell中生效
    環境變量在當前shell和這個shell的全部子shell中生效

功能說明:以樹狀圖顯示程序。
語  法:pstree [-acGhlnpuUV][-H <程序識別碼>][<程序識別碼>/<用戶名稱>
參  數:
-a  顯示每一個程序的完整指令,包含路徑,參數或是常駐服務的標示。
-c  不使用精簡標示法。
-G  使用VT100終端機的列繪圖字符。
-h  列出樹狀圖時,特別標明如今執行的程序。
-H <程序識別碼>  此參數的效果和指定"-h"參數相似,但特別標明指定的程序。
-l  採用長列格式顯示樹狀圖。
-n  用程序識別碼排序。預設是以程序名稱來排序。
-p  顯示程序識別碼。
-u  顯示用戶名稱。
-U  使用UTF-8列繪圖字符。
-V  顯示版本信息。

補充說明:pstree指令用ASCII字符顯示樹狀結構,清楚地表達程序間的相互關係。若是不指定程序識別碼或用戶名稱,則會把系統啓動時的第一個程 序視爲基層,並顯示以後的全部程序。若指定用戶名稱,便會以隸屬該用戶的第一個程序看成基層,而後顯示該用戶的全部程序。

設置環境變量
export 變量名=變量值
或
變量名=變量值
export 變量名

查看環境變量
set     #查看全部環境變量
env     #查看環境變量

調用變量
echo $變量名       # 如 echo $name

刪除變量
unset 變量名       # 如 unset name

PATH環境變量工具

PATH變量:系統查找命令的路徑

echo $PATH      #查看PATH環境變量
PATH="$PATH":/root/sh     #增長PATH變量的值,等號兩邊不能有空格

PS1 環境變量字體

PS1變量:命令提示符設置
    \d:顯示日期,格式爲「星期 月 日」
    \H:顯示完整的主機名。如默認主機名「localhost.localdomain"
    \t:顯示24小時制時間,格式爲 「HH:MM:SS」
    \A:顯示24小時制時間,格式爲 「HH:MM」
    \u:顯示當前用戶名
    \w:顯示當前所在目錄的完整名稱
    \W:顯示當前所在目錄的最後一個目錄
    \$:提示符。若是是root用戶會顯示提示符爲「#」,若是是普通用戶會顯示提示符爲「$」

bash語序變量

locale
# 查詢當前系統語序變量
locale -a  #查看全部語系
locale -a | more
LANG    定義系統主語序的變量
LC_ALL  定義總體語序的變量

echo $LANG      #查看當前語系變量    
echo $LC_ALL    #查看總體語序的變量

cat /etc/sysconfig/i18n     #查詢系統默認語系
cat /etc/default/locale     #ubuntu系統下默認語言的文件

linux中文支持
前提條件,正確安裝的中文字體和中文語系:
    若是有圖形界面,能夠正確支持中文顯示
    若是使用第三方遠程工具,只要語系設置正確,能夠支持中文顯示
    若是使用純字符界面,必須使用第三方插件(如zhcon等)

位置參數變量

$n:n爲數字,$0表明命令自己,$1-$9表明第一道第九個參數,
    十個以上的參數須要用大括號包含,如${10}
$*:這個變量表明命令行中全部的參數,$*把全部參數看出一個總體
$@:這個變量也是表明命令行中全部參數,不過$@把每一個參數區分對待
$#:這個變量表明命令行中全部參數的個數
#!/bin/bash
    #加減乘除 (+-*/)
    x1=$1
    operator=$2
    x2=$3
    echo "x1" $operator  "x2 = " $(($x1 $operator $x2))
#!/bin/bash
    for i in "$*"   #$*中全部參數當作一個總體,因此for循環只執行一次
        do
            echo "The parameters is: $i"
        done
    for y in "$@"   #$@中的每一個參數是獨立的,所以「$@」中有幾個參數,就會執行幾回
        do 
            echo "Parameter:$y"
        done
    echo $#

預約義變量

$?:最後一次執行的命令的返回狀態。若是這個變量的值爲0,證實上一個命令正確執行;
    若是這個變量的值爲非0(具體是哪一個數,由命令本身來決定),則證實上一個命令執行不正確。
$$:當前進程的進程號(PID)
$!:後臺運行的最後一個進程的進程號(PID)
echo $$     #返回當前進程號 7588
    ps aux | grep 7588
#!/bin/bash
    echo "current PID: $$"
    find / -name hello.sh &     #&爲放入後臺
    echo "backgroud: $!"
接受鍵盤輸入
read [選項] [變量名]
選項:
    -p:「提示信息」:在等待read輸入時,輸出提示符信息
    -t 秒數:read命令會一直等待用戶輸入,使用此選項能夠指定等待時間
    -n 字符個數:read命令只接受指定的字符數,就會執行
    -s:隱藏輸入的數據,適用於機密信息的輸入
#!/bin/bash
    read -p "please input your name: " -t 30 name
    echo -e "\n$name"
    
    read -p "please input your passwd: " -s passwd
    echo -e "\n$name"
    
    read -p "please input your angend [M/F]: " -n 1 sex
    echo $sex
相關文章
相關標籤/搜索