1. 程式人生 > >shell變數與字串操作

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“

[email protected] --  所有的位置引數,並將其看成一個字串陣列,如”test.sh abc 123“,則$*為”abc 123“

$# --  位置引數的個數

$? --  上一條命令執行結束後的返回值

$$ --  當前bash shell的程序號

$! --  上一個後臺程式的程序號

7、調整變數的屬性

declare命令不僅可以用來宣告變數,還可以用來調整變數的屬性,具體用法如下:

-p  顯示變數的屬性

-a  變數是一個數組

-i   變數是一個整數

-r  變數為只讀的

-x  變數為環境變數

相關推薦

shell變數字串操作

預設情況下,Bash shell是一種無型別的腳步語言,除非用declare特別宣告,否則它不會區分一個變數是整數變數、浮點數變數還是字串變數。在Bash shell中所有的變數都被看成是字串,使用時也不需要進行宣告。 1、變數的命名 bash shell中變數的命名規則

shell中的字串操作——字串的切割總結

前言 在python和java等語言中,對字串操作大多都是呼叫函式來完成,但是像shell這種使用c語言編寫的程式,對字串的切割顯得更加簡單。shell指令碼中對字串的切割有很多種,在這裡我將我熟悉,好用的方法給總結出來,分享給大家,希望能夠對你們的學習和工作起到幫助。 1、${va

shell變數數字運算

shell變數與數字運算,變數與數字不能直接運算。 變數與數字直接運算,結果是play+1,如下所示: play=2 play=play+1 echo $play #輸出結果 play+1 加上let 後,運算結果正確,示例如下: play=2 let play=play+1 ec

shell指令碼關於字串操作

字串單引號和雙引號的差別 單引號中間不能再次出現單引號,這就意味這單引號中間出現變數是無效的,直接點說,單引號中間無論出現什麼都會原樣輸出。但是單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符後也不行),但可成對出現,作為字串拼接使用。雙引號中間是可以出現變數的,而且雙引號中間是

shell變數運算

shell變數與運算 變數存在於記憶體中。假設變數str,設定或修改變數屬性時,不帶$號,只有引用變數的值時才使用$號。也就是說在記憶體中,標記變數的變數名稱是str,而不是$str。 變數資料的儲存方式本身是有型別之分的,分為資料(整數、浮點型)和字元,在java等一些語言中,需要提前宣告變數是哪種型別

Python變數字串

# 開啟檔案,寫入字串 file = open('/D/file.txt','w') file.write('hello world!') # 字串組合輸出 a = 'plays ' b = 'g

shell指令碼之字串操作

1.取字元長度 var="abcdef" echo ${#var} echo ${var} | awk '{print length($0)}' echo ${var} | awk -F "" '{print NF}' echo `expr length ${v

python學習:變數字串

counter = 100 # 賦值整型變數 miles = 1000.0 # 浮點型 name = "John" # 字串 print counter print miles print name 以上例項中,100,1000.0和"John"分別賦值給counter,miles

shell變數字串)間的連線

對於變數或者字串的連線,shell提供了相當簡單的做法,比string的連線還要直接。 直接放到一起或用雙引號即可。 例如$a, $b,有 c=$a$b c=$a"xyz"$b c=$a$b.txt

C++ 字串類,字串變數字串陣列

但是這種方式存在一些弊端,比如字元陣列的大小是固定的,在進行字元連線或字元複製時,需要計算字串與字元陣列的長度,否則就可能發生一部分字元超出陣列範圍。 為此,C++提供了一種新的資料型別——字串型別(string),實際上在C++的基本資料型別中並不包含s

shell 字串操作 + 變數替換

本篇內容包括:     字串操作     變數替換 1.字串操作      表示式 含義 ${#string} 獲取字

bash字串操作以及shell中$(( ))$( )還有${ }的區別

介紹下Shell中的${}、##和%%使用範例,本文給出了不同情況下得到的結果。 假設定義了一個變數為: 程式碼如下: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分別替換得到不同的值: ${file#*/}:刪掉第一個 / 及其左邊的字串:dir1/di

awk字串操作字串連結、傳入傳出shell變數) awk 字串連線操作(字串轉數字,數字轉字串) awk當中使用外部變數 awk中使用shell的環境變數 awk如何向shell傳值

1.awk基礎 awk的環境變數及其意義   https://blog.csdn.net/snowpay/article/details/52451718 linux awk命令詳解 https://www.cnblogs.com/xudong-bupt/p/3721210.html 2.aw

shell變數字串常用操作小結

1、常用的基本操作解析: ①${#string} //返回$string的長度(字串中的字元個數),${string} | wc -m也可以達到類似的效果 ②${string:position} //返回$string的position開始的字串(提取字串

shell字串操作(一)——字串變數

一、字串變數定義與賦值 符號意義: :空測試    =>空為真 -  負向測試 =>不存在為真 + 正向測試 =>存在為真 = 賦值 ?有問題,錯誤 表示式 含義 示例 var=string var='string

JSON陣列,json字串,JSON物件,陣列的區別基本操作整理

JSON陣列,json字串,JSON物件,陣列的區別與基本操作整理 json字串 var objString = '{"a":"1","b":"2","c":"3"}'; json物件       var object

java 字串的比較合併操作

1.字元的排序 2 種方法 public class Sort   {       public static void main(Stri

python學習(三)字典、元組、字串 語法基礎常用操作

元組,也算是一個list,但是元組不能修改,比如定義一個數據庫的連線資訊,定義之後不能被修改。用()括號表示,用逗號隔開,比如:mysql=(‘192.168.xx.xxx’,’root’,’123456’) 操作 :count、index count操作:計算元素出現的次數

JavaScript介紹、嵌入頁面的方式、註釋斷點除錯、變數、元素操作

JavaScript介紹 JavaScript 是執行在瀏覽器端的腳步語言,JavaScript 主要解決的是前端與使用者互動的問題,包括使用互動與資料互動。 JavaScript 是瀏覽器解釋執行的,前端指令碼語言還有JScript(微軟,IE 獨有),ActionScript(Ado

Crontab內環境變數Shell環境變數的關係及解決問題的辦法

問題 有時需要用到Crontab的定時任務去執行指令碼,但是發現通過命令(./test.sh)執行Shell檔案的時候,可以獲取Linux的環境變數;可是通過Crontab做的定時任務,無法獲取。 問題剖析 crontab有一個壞毛病,就是它總是不會預設的從使用者profi