shell变量与字符串操作
默認情況下,Bash shell是一種無類型的腳步語言,除非用declare特別聲明,否則它不會區分一個變量是整數變量、浮點數變量還是字符串變量。在Bash shell中所有的變量都被看成是字符串,使用時也不需要進行聲明。
1、變量的命名
bash shell中變量的命名規則和C語言相同,必須是由英文字母、數字及下劃線組成,第一個字符必須是字母或下劃線,變量的長度沒有限制,但英文字母區分大小寫。雖然,bash shell中使用變量時不需要聲明,但還是提倡對一些重要的變量進行聲明、添加注釋,以便閱讀和維護。聲明或創建一個變量之后,它的作用域是當前shell,子shell無法獲取父shell中定義的變量,除非該變量時環境變量。
2、設定變量
在bash shell中要設置某個變量的值是很容易的,只需要按照:
變量名稱=值
的方式即可改變某個變量的值,需要注意的是等號的兩邊是不能有空格的,若值中含有空格的話,需要用引號括起來。
3、獲取變量值
要獲取某個變量的值只需要在該變量的名稱前面加上$或用${}將變量括起來即可。
# echo $PATH
# echo ${PATH}
4、取消與清空變量
當你不再需要某個變量時,你可能想取消該變量,即將該變量從當前名字空間中刪除并釋放該變量所占用的內存。在bash shell中可以用unset命令來取消某個變量。用法如下:
unset 變量名稱或unset -v 變量名稱
-v表示取消變量,unset除了可以用來取消變量外,還可以用來取消函數,用unset來取消函數時,用法如下:
unset -f 函數名稱
使用unset以后,變量就不復存在了,這可能并不是你想要的,你可能只是想將清除該變量中的值,使其為null,即清空變量,清空變量的操作如下:
變量名稱=
5、環境變量
只有當一個變量成為環境變量時,它才能為子shell所用,為了使一個變量成為環境變量,需要使用export命令,具體如下:
變量名稱="xxxx"
export 變量名稱
或
export變量名稱="xxxx"
除了使用export之后,還可以在聲明的時候就將變量指定為環境變量,如下:
declare -x 變量名稱
6、bash的內置變量
除了環境變量和用戶自定義的變量之外,bash shell中還會用到很多的內置變量,下面介紹一些常用的內置變量。
BASH-- bash的完整路徑,通常是/bin/bash
BASH_VERSION-- bash的版本
BASH_ENV-- 在非交互模式下,會先檢查$BASH_ENV是否有指定的啟動文件,如果有則先執行它
ENV-- 與BASH_ENV類似,不過是在POSIX模式下,會先檢查$ENV是否有指定的啟動文件,如果有則先執行它
CDPATH-- cd命令的搜索路徑
PATH-- 命令的搜索路徑
EUID-- 有效的用戶id
FUNCNAME-- 在函數執行期間,即為函數的自身的名稱
HOSTNAME-- 主機名
HOSTTYPE-- 主機類型,如i386
OSTYPE-- 執行bash的操作系統類型,如linux-gnu
HOME-- 用戶主目錄
IFS -- 默認的字段分隔符
OPTARG-- 使用getopts處理選項時,取得的選項的參數
OPTIND-- 使用getopts處理選項時,選項的索引值
OPTERR-- 若將OPTERR設置為1,則getopts發生錯誤,輸出錯誤信息
$1~$n-- 位置參數,即傳入程序或函數的參數,$1即第一個參數,$2為第二個參數,其他類推
$*-- 所有的位置參數,并將其看成一個字符串,如”test.sh abc 123“,則$*為”abc 123“
$@-- 所有的位置參數,并將其看成一個字符串數組,如”test.sh abc 123“,則$*為”abc 123“
$#-- 位置參數的個數
$?-- 上一條命令執行結束后的返回值
$$-- 當前bash shell的進程號
$!-- 上一個后臺程序的進程號
7、調整變量的屬性
declare命令不僅可以用來聲明變量,還可以用來調整變量的屬性,具體用法如下:
-p 顯示變量的屬性
-a 變量是一個數組
-i 變量是一個整數
-r 變量為只讀的
-x 變量為環境變量
總結
以上是生活随笔為你收集整理的shell变量与字符串操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux之SQL语句简明教程---UN
- 下一篇: rtmp/rtsp/hls公网测试地址