日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Bash脚本基础:环境变量定义与使用

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bash脚本基础:环境变量定义与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


腳本中會遇到很多使用環境變量的地方,這篇文章介紹一下BASH中使用的基礎知識。

環境變量的分類

環境變量有很多中分類,根據環境變量的定義方式可以分為自定義環境變量和系統環境變量。自定義環境變量為使用者自行定義的一些變量。

  • 系統環境變量
    系統自身的一些缺省環境變量,比如PATH等。比如在CentOS的Linux的root用戶下確認如下幾個環境變量的值
[root@host121 ~]# echo $USER $PWD $LANG $SHELL root /root en_US.UTF-8 /bin/bash [root@host121 ~]#

在macOS的liumiao用戶下確認同樣的環境變量的值,結果如下所示:

liumiaocn:~ liumiao$ echo $USER $PWD $LANG $SHELL liumiao /Users/liumiao /bin/bash liumiaocn:~ liumiao$
  • 自定義環境變量

變量名稱可以根據需要進行設定,使用export在當前進程生效。比如:

liumiaocn:~ liumiao$ export ENV_HOST_LIST="192.168.163.122" liumiaocn:~ liumiao$ echo $ENV_HOST_LIST 192.168.163.122 liumiaocn:~ liumiao$

env命令:確認環境

無論是自定義環境變量還是系統環境變量,當前進程中生效的環境變量均可使用env進行確認

liumiaocn:~ liumiao$ env |egrep 'USER|PWD|LANG|SHELL' SHELL=/bin/bash OLDPWD=/Users/liumiao/VirtualBox VMs USER=liumiao PWD=/Users/liumiao liumiaocn:~ liumiao$

自定義的環境變量,一旦expose之后也可以使用env進行確認

liumiaocn:~ liumiao$ export ENV_HOST_LIST="192.168.163.123" liumiaocn:~ liumiao$ echo $ENV_HOST_LIST 192.168.163.123 liumiaocn:~ liumiao$ env |grep ENV_HOST_LIST ENV_HOST_LIST=192.168.163.123 liumiaocn:~ liumiao$

使用示例說明

如下腳本定義了一個環境變量,變量名為ENV_HOST_LIST,如果此環境變量沒有值的話,設定此環境變量的值并顯示。

liumiaocn:shell liumiao$ cat test_script.sh #!/bin/sh set -exif [ _"" = _"${ENV_HOST_LIST}" ]; thenexport ENV_HOST_LIST="192.168.16.121" fiecho "ENV_HOST_LIST: $ENV_HOST_LIST" liumiaocn:shell liumiao$

如果在執行此腳本時,ENV_HOST_LIST已經有值,則只會顯示已有的值,執行結果如下所示:

liumiaocn:shell liumiao$ export ENV_HOST_LIST=192.168.163.124 liumiaocn:shell liumiao$ env |grep ENV_HOST_LIST ENV_HOST_LIST=192.168.163.124 liumiaocn:shell liumiao$ sh test_script.sh + '[' _ = _192.168.163.124 ']' + echo 'ENV_HOST_LIST: 192.168.163.124' ENV_HOST_LIST: 192.168.163.124 liumiaocn:shell liumiao$ echo $ENV_HOST_LIST 192.168.163.124 liumiaocn:shell liumiao$

使用unset命令可以清除變量定義,使用之前清除。一旦unset,此變量使用env命令也無法搜索到,使用示例如下所示:

liumiaocn:shell liumiao$ echo $ENV_HOST_LIST 192.168.163.124 liumiaocn:shell liumiao$ env |grep ENV_HOST_LIST ENV_HOST_LIST=192.168.163.124 liumiaocn:shell liumiao$ unset ENV_HOST_LIST liumiaocn:shell liumiao$ echo $ENV_HOST_LISTliumiaocn:shell liumiao$ env |grep ENV_HOST_LIST liumiaocn:shell liumiao$

在這種情況之下,再次執行上述腳本,可以看到如下結果

liumiaocn:shell liumiao$ sh test_script.sh + '[' _ = _ ']' + export ENV_HOST_LIST=192.168.16.121 + ENV_HOST_LIST=192.168.16.121 + echo 'ENV_HOST_LIST: 192.168.16.121' ENV_HOST_LIST: 192.168.16.121 liumiaocn:shell liumiao$

可以看到在此腳本中ENV_HOST_LIST被設定為192.168.16.121,并進行了expose操作。其退出之后,當前進程是否還有其設定的值呢,當然沒有了。

liumiaocn:shell liumiao$ env |grep ENV_HOST_LIST liumiaocn:shell liumiao$ echo $ENV_HOST_LISTliumiaocn:shell liumiao$

那export的意義在哪里呢,實際上腳本過于簡單,環境變量可以作為全局的傳值方法之一,如果export之后還是啟動了其他腳本和進程,就可以使用此環境變量了。

export命令:設置環境變量

變量通過=進行賦值,使用export將其設置成環境變量,使用和不使用有什么區別呢?簡單來說定義了一個變量之后,在當前進程中是可以使用的,但是如果不對此變量進行export操作,其當前進程中調用的其他進程或者腳本是無法使用此變量的。從如下使用示例中可以看到,如果設定了一個變量并不進行export操作,雖然在當前進程中可以使用echo確認此變量的值,但是env命令中并不存在此變量的信息。

liumiaocn:shell liumiao$ unset ENV_HOST_LIST liumiaocn:shell liumiao$ ENV_HOST_LIST=192.168.161.151 liumiaocn:shell liumiao$ echo $ENV_HOST_LIST 192.168.161.151 liumiaocn:shell liumiao$ env |grep ENV_HOST_LIST liumiaocn:shell liumiao$

結合上述示例進行說明也可以看到,在腳本中也沒有讀取到此變量的內容

liumiaocn:shell liumiao$ sh test_script.sh + '[' _ = _ ']' + export ENV_HOST_LIST=192.168.16.121 + ENV_HOST_LIST=192.168.16.121 + echo 'ENV_HOST_LIST: 192.168.16.121' ENV_HOST_LIST: 192.168.16.121 liumiaocn:shell liumiao$

定義小技巧

上述的if語句,如果使用腳本中定義的一個小的技巧,可以一行實現,具體示例如下所示:

liumiaocn:shell liumiao$ cat test_script.sh #!/bin/sh set -exexport ENV_HOST_LIST=${ENV_HOST_LIST:-192.168.163.131} echo "ENV_HOST_LIST: $ENV_HOST_LIST" liumiaocn:shell liumiao$

執行結果如下:

liumiaocn:shell liumiao$ unset ENV_HOST_LIST liumiaocn:shell liumiao$ sh test_script.sh + export ENV_HOST_LIST=192.168.163.131 + ENV_HOST_LIST=192.168.163.131 + echo 'ENV_HOST_LIST: 192.168.163.131' ENV_HOST_LIST: 192.168.163.131 liumiaocn:shell liumiao$ export ENV_HOST_LIST=192.168.163.141 liumiaocn:shell liumiao$ sh test_script.sh + export ENV_HOST_LIST=192.168.163.141 + ENV_HOST_LIST=192.168.163.141 + echo 'ENV_HOST_LIST: 192.168.163.141' ENV_HOST_LIST: 192.168.163.141 liumiaocn:shell liumiao$

總結

以上是生活随笔為你收集整理的Bash脚本基础:环境变量定义与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。