shell程式設計之給變數賦值的五種方法

2021-06-23 06:26:45 字數 3226 閱讀 7208

1.  shell中的變數型別

shell中的變數可以分為環境變數、位置變數、預定義的特殊變數以及使用者自定義變數、

2.  環境變數

shell中的環境變數是一類shell預定義變數,是用於設定系統執行環境的變數,環境變數由系統統一命名。部分系統變數的值由系統設定,部分環境變數的值可以由使用者給定。

環境變數的名稱由大寫字母組成,常用的shell環境變數如下所示:

home: 使用者主目錄的全路徑名,cd $home 即可切換到使用者的主目錄

path: 類似於windows下的路徑,shell會在裡面依次尋找二進位制的可執行檔案。

echo $path可以顯示當前的path,新增新的path方法 $path=$path:新path

term:  終端型別 echo $term

ps1:   提示符,root使用者預設為#,普通使用者預設為$

shell: shell直譯器的絕對路徑

logname: 登入使用者的使用者名稱

uid:  當前使用者的uid    echo $uid

3.  位置變數

位置變數是根據出現在命令列上的引數的位置確定的變數,在呼叫shell程式的命令列中,引數的位置定義如下所示。

$命令  引數1   引數2  引數3

其中  $0  對應  執行的命令名

$1  對應  引數1

$2  對應  引數2

$3  對應  引數3

一定要搞清楚順序!!

4.  預定義的特殊變數

預定義的特殊變數有著特殊的含義,使用者不可以更改,所有的預定義變數都由「$」符號和另外乙個符號組成,常用的預定義特殊變數如下所示

$#: 位置引數個數(不包括shell指令碼名)

$*:  位置引數組成的字串

$!:   上乙個後台命令對應的程序號

$?:   上乙個命令的退出狀態,為十進位制數字,如果返回為0,則代表執行成功。

$$:   當前的程序號pid

5.  使用者自定義變數 (大小寫敏感

要求: 變數名由字母或者下劃線開頭,後面跟任意數量的字母、數字、下劃線。

合法的:

_name    size    my_idea

非法的:

2god      !name   hello&world

6.  變數的建立

有兩個內建的命令declare 和 typeset 可用於建立變數。通過命令的選項設定還可以設定變數的建立方。

除了使用內建命令來建立和設定變數外,還可以直接賦值,格式為:

變數名=變數值

注意:變數名前面不應加美元「$」符號。(和php不同)

等號「=」前後不可以有空格。

和c語言不同,shell中不需要顯式的語法來宣告變數。

變數名不可以直接和其他字元相連,如果想相連,必須用括號:echo 「this is $(he)llo!」

7.  變數的刪除

系統提供unset命令可以刪除變數,例如

unset  name

8.  變數的賦值

變數的賦值有五種:使用read命令,直接賦值,使用命令列引數,使用命令列的輸出結果,從檔案讀取。

先說一下從read命令吧:(主要是在需要互動時使用

read命令是系統內建命令,語法格式為:

read  變數1   變數2

當shell指令碼執行到read命令時,將暫停指令碼的執行並等待鍵盤的輸入,當使用者輸入完畢並且敲下回車之後,將完成賦值操作,指令碼繼續執行。

read指令的規則:

l  多個資料或變數之間用空格隔開

l  若變數個數與資料個數相等時,對應取值

l  若變數個數大於資料個數時,沒有輸入資料的變數取空值

l  若變數個數小於資料個數時,將多餘的資料賦給最後乙個變數(也就是把空格當成字串處理)

例子:#!/bin/bash

echo –n 「 please enter your name」  //-n 表示使用者輸入和提示資訊在同一行

read name

echo 「your name is $name」

#!/bin/bash

echo 「please  enter  your  first name  and last name :」

read first last

echo 「your first name is $first」

echo 「your last name is $last」

第二種賦值方法就是直接給變數賦值(這種賦值方法主要是在不需要互動時,並且引數不需要修改時使用

例如:name=xiaosu

gender=man

第三種賦值方法是使用命令列引數賦值。(這種賦值方法是引數需要經常變化,並且不需要互動時使用

這種賦值方法,也就是直接在命令後面跟引數,然後系統用$1來引用第乙個引數。

第四種方法是利用命令的輸出結果賦值(這種賦值方法可以直接處理上個命令產生的資料

在shell程式中,可以將乙個命令的輸出結果來當做變數,不過需要在賦值語句中使用反引號

例如currentdir=`pwd`

echo $currentdir

最後一種賦值方法是從檔案中讀入資料

這種方式就適合處理大批量的資料,直接把相應的資料寫入檔案,然後執行指令碼即可。

通常是通過while迴圈一行行讀入資料,即沒迴圈一次,就從檔案中讀取一行資料,直到讀取到檔案的結尾。

例如:#!/bin/bash

ls *.sh >execfile

while read line

dochmod a+x $line

done這個指令碼使用了while..do..done 結構,最後一行表示從檔案execfile讀取資料。while read line表示 每次迴圈讀入一行資料並賦值給變數line。

9.  變數的輸出

最簡單的方法就是使用echo

如果想輸出格式化的字串,就需要使用printf,用法和c語言類似

printf 命令的格式說明符

\」    輸出雙引號

\\    輸出反斜槓

\a    響鈴

\n    換行

\r     回車

** :

shell程式設計之變數賦值

1.變數賦值 name lbg 等號前後不能有空格 name lebron james 變數值中有空格要用雙引號 echo 用 更保險 shopt s o nounset 設定 先宣告再使用 2.取消變數 unset 釋放變數和函式的記憶體3.位置引數 輸入的第n個引數 0表示指令碼名字 輸入引數的...

Shell程式設計之變數

一.什麼是變數與變數分類 bash 中預設型別為字串型 使用者自定義變數 變數自定義的 環境變數 儲存的是和系統操作環境相關的資料,可以自定義,但是對於系統生效的環境變數名是固定的 位置引數變數 這種變數主要是用來向指令碼當中傳遞引數或資料的,變數名不能自定義,變數作用是固定的 預定義變數 是bas...

shell程式設計之變數

shell程式設計之變數 linux shell程式設計基礎中的變數。包括bash變數的分類和各變數的詳細使用,如 使用者自定義變數 環境變數 語系變數 位置引數變數和預定義變數。1 什麼是bash變數?變數 計算機記憶體單元,其中存放的值可以更改!bash變數就bash中的變數2 變數有哪些分類,...