[shell基礎]——變數

Jelly_lyj發表於2017-03-18

變數的賦值

#定義變數,注意等號兩邊沒有任何空格
variable=
#定義環境變數
export variable=
#雙引號:可含空格、可轉義特殊字元
variable=" "              
#$() 或 反引號:將命令結果賦值給變數
variable=$( )  
variable=`  `     
#將變數值賦值給變數
gg=$aa$bb

 

變數的取值

#取值
$variable
#標準寫法,建議使用此方法
${variable} 

#示例:
#DAY
=sunday
#
echo $DAY
sunday
#
echo "hello sunday"> $DAY_file.txt
#
ls

#
echo "hello sunday"> ${DAY}_file.txt
#
ls sunday_file.txt

 

變數的取消與檢視 

#unset:取消變數和函式
unset variable
unset function
#env    檢視系統所有的環境變數
#set    檢視所有的系統預設變數+使用者自定義變數

 

區域性變數/使用者變數

      區域性變數:只在當前的shell中有效;
      使用者變數:針對與當前使用者有效, .bashrc 下可以檢視。

                     

 

 

全域性變數/環境變數

      當前建立變數的shell即為父shell,全域性變數可以從父shell傳遞到子shell、孫shell···

      注意環境變數只能向下傳遞而不能向上傳遞。

                   

一些常見的預設變數(可通過 man bash檢視):

#變數BASH:顯示當前的bash shell
[root@localhost shell]# echo $BASH
/bin/bash

#變數BASH_VERSION:顯示當前bash shell版本
[root@localhost shell]# echo $BASH_VERSION
4.1.2(1)-release

#變數HOSTNAME:主機名
[root@TXY_host test]# echo $HOSTNAME
TXY_host

#變數HOSTTYPE:主機架構
[root@TXY_host test]# echo $HOSTTYPE
x86_64

#變數MACHTYPE:主機型別的gnu標識
[root@TXY_host test]# echo $MACHTYPE
x86_64-redhat-linux-gnu

#變數LANG:系統的語言環境
[root@TXY_host test]# echo $LANG
C
#設定語言環境為中文
# export LANG=zh_CN.UTF-8

#變數PWD:當前目錄
[root@TXY_host test]# echo $PWD
/shell/test

#變數OLDPWD:上一次訪問目錄
[root@TXY_host test]# echo $OLDPWD
/shell

#變數EUID:顯示當前使用者的UID
[root@localhost ~]# echo $EUID
0

#變數CDPATH:可以快速進入此目錄
#cd時會首先檢視當前目錄是否有network-scripts,若沒有則進入CDPATH定義的目錄
[root@localhost shell]# CDPATH="/etc/sysconfig"
[root@localhost shell]# cd network-scripts
/etc/sysconfig/network-scripts

#變數FUNCNAME:用在函式內,顯示當前函式名
[root@TXY_host test]# cat funcname.sh
#/bin/bash
funcname()
{
   echo $FUNCNAME
}
funcname

[root@TXY_host test]# bash funcname.sh
funcname

 

特殊變數

1.位置引數

        $0:預留儲存實際指令碼名字;無論指令碼是否有引數,此值均可用。
        $1-$9:第1—9個引數

        ${10}:位置引數大於9後的表示方法

        $#:指令碼引數的個數總和

        $*/$@:表示指令碼的所有引數

 

2. 特定的變數引數

        $!   Shell最後執行的後臺Process的PID  
        $-   顯示shell使用的當前選項,與set命令功能相同
       $$   指令碼執行的當前程式ID號

# cat aatest.sh
#!/bin/bash
echo $$
# ./aatest.sh
3520

 

3.命令返回值

        執行一條命令後,

        $? 值為0表示執行成功,非0則表示執行失敗。 

相關文章