當前位置:首頁 » 網頁前端 » shell腳本單引號里使用變數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

shell腳本單引號里使用變數

發布時間: 2023-03-14 14:25:31

⑴ shell腳本裡面怎麼在字元串中引用變數

單引號里 $ 符號會被當成普通字元串,而不會引用其變數值。你應該用雙引號,如:"xxxx${abc}xxxx"

⑵ shell腳本中單引號和雙引號的區別

在linux操作系統上編寫shell腳本時候,我們是在變數的前面使用$符號來獲取該變數的值,通常在腳本中使用」$param」這種帶雙引號的格式,但也有出現使用'$param'這種帶引號的使用的場景,首先大家看一段例子:
復制代碼代碼如下:
[root@linux
~]#
name=tektea
[root@linux
~]#
echo
$name
tektea
[root@linux
~]#
sayhello=」hello
$name」
[root@linux
~]#
echo
$sayhello
hello
tektea
[root@linux
~]#
sayhello='hello
$name'
[root@linux
~]#
echo
$sayhello
hello
$name
發現了嗎?沒錯!使用了單引號的時候,那
$name將失去原有的變數內容,僅為一般字元的顯示型態而已!這里必需要特別小心在意!
所以,單引號與雙引號的最大不同在於雙引號仍然可以保有變數的內容,但單引號內僅能是一般字元,而不會有特殊符號,我們也可以這里理解:'$sayhello'

「\$sayhello」是相同的。
在shell腳本開發過程中,針對變數的單引號(『)和雙引號(「)都是有應用場景的,根據我的經驗總結起來就是:
1.
獲取變數值的時候就使用雙引號(「),這是基本用法。
2.
如果是在腳本中要編寫一個新的腳本,同時這個新的腳本中還需要包含變數,你就可以選擇使用單引號(『)了,特別是生成一個臨時的expect腳本時,單引號(『)就會經常使用到的。

⑶ 如何在shell腳本中使用變數

在網路中 搜索 linux 系統中使用變數 關鍵詞 ,有問題網路。 下面是我查的示例。


  1. 顯示環境變數HOME


$ echo $HOME

/home/redbooks

2. 設置一個新的環境變數hello

$ export HELLO="Hello!"

$ echo $HELLO

Hello!

3. 使用env命令顯示所有的環境變數

$ env

HOSTNAME=redbooks.safe.org

PVM_RSH=/usr/bin/rsh

Shell=/bin/bash

TERM=xterm

HISTSIZE=1000

...

4. 使用set命令顯示所有本地定義的Shell變數

$ set

BASH=/bin/bash

BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")

BASH_VERSION='2.05b.0(1)-release'

COLORS=/etc/DIR_COLORS.xterm

COLUMNS=80

DIRSTACK=()

DISPLAY=:0.0

...

5. 使用unset命令來清除環境變數

set可以設置某個環境變數的值。清除環境變數的值用unset命令。如果未指定值,則該變數值將被設為NULL。示例如下:

$ export TEST="Test..." #增加一個環境變數TEST

$ env|grep TEST #此命令有輸入,證明環境變數TEST已經存在了

TEST=Test...

$ unset $TEST #刪除環境變數TEST

$ env|grep TEST #此命令沒有輸出,證明環境變數TEST已經存在了

6. 使用readonly命令設置只讀變數

如果使用了readonly命令的話,變數就不可以被修改或清除了。示例如下:

$ export TEST="Test..." #增加一個環境變數TEST

$ readonly TEST #將環境變數TEST設為只讀

$ unset TEST #會發現此變數不能被刪除

-bash: unset: TEST: cannot unset: readonly variable

$ TEST="New" #會發現此也變數不能被修改

-bash: TEST: readonly variable

環境變數的設置位於/etc/profile文件

如果需要增加新的環境變數可以添加下屬行

export path=$path:/path1:/path2:/pahtN

-----------------------------------------------------------------------------------------------------------------------

1.Linux的變數種類

按變數的生存周期來劃分,Linux變數可分為兩類:

1.1 永久的:需要修改配置文件,變數永久生效。

1.2 臨時的:使用export命令聲明即可,變數在關閉shell時失效。

2.設置變數的三種方法

2.1 在/etc/profile文件中添加變數【對所有用戶生效(永久的)】

用VI在文件/etc/profile文件中增加變數,該變數將會對Linux下所有用戶有效,並且是「永久的」。

例如:編輯/etc/profile文件,添加CLASSPATH變數

# vi /etc/profile

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

註:修改文件後要想馬上生效還要運行# source /etc/profile不然只能在下次重進此用戶時生效。

2.2 在用戶目錄下的.bash_profile文件中增加變數【對單一用戶生效(永久的)】

用VI在用戶目錄下的.bash_profile文件中增加變數,改變數僅會對當前用戶有效,並且是「永久的」。

例如:編輯guok用戶目錄(/home/guok)下的.bash_profile

$ vi /home/guok/.bash.profile

添加如下內容:

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

註:修改文件後要想馬上生效還要運行$ source /home/guok/.bash_profile不然只能在下次重進此用戶時生效。

2.3 直接運行export命令定義變數【只對當前shell(BASH)有效(臨時的)】

在shell的命令行下直接使用[export 變數名=變數值] 定義變數,該變數只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關閉了,變數也就失效了,再打開新shell時就沒有這個變數,需要使用的話還需要重新定義。

3.環境變數的查看

3.1 使用echo命令查看單個環境變數。例如:

echo $PATH

3.2 使用env查看所有環境變數。例如:

env

3.3 使用set查看所有本地定義的環境變數。

unset可以刪除指定的環境變數。

4.常用的環境變數

PATH 決定了shell將到哪些目錄中尋找命令或程序

HOME 當前用戶主目錄

HISTSIZE歷史記錄數

LOGNAME 當前用戶的登錄名

HOSTNAME指主機的名稱

SHELL 當前用戶Shell類型

LANGUGE 語言相關的環境變數,多語言可以修改此環境變數

MAIL當前用戶的郵件存放目錄

PS1基本提示符,對於root用戶是#,對於普通用戶是$

⑷ Shell之環境變數、局部變數

變數可分為兩類:

環境變數又被稱為全局變數,可以在創建的shell以及任意子進程shell中使用。局部變數只能在創建的shell腳本中使用。

環境變數用於定義Shell的運行環境,保證Shell命令的正確執行,Shell通過環境變數來確定登錄的用戶名、登錄目錄等。所有的環境變數都是系統的全局變數,可用於所有的子進程中。

環境變數可以在命令行中設置,但用戶退出後這些變數值也會隨之丟失,所以最好在下面的文件或者目錄中配置,每次用戶登錄都將會被初始化:

環境變數可用在任意的Shell進程中,環境變數名一般大寫,並且是已經使用export內置命令進行了導出。比如HOME、PATH、UID、USER等,在用戶登陸之前已經本/bin/login程序設置好了。

下面是常見的系統環境變數:

更多詳情請通過env命令查看:

如果設置想自己設置環境變數,有臨時生效和永久生效兩種:

在.bash_profile或者/etc/profile文件中使用export導出變數,然後使用"."或者source命令使其生效。

系統的內置的環境變數或者自定義的環境變數可以通過echo或者printf進行列印:

對於有哪些變數使用env(上述已經說過)或者set命令:

使用unset取消變數,不要隨意使用,尤其是系統環境變數:

局部變數的生命周期是當前的Shell腳本,如果啟動另一個Shell進程或者退出當前Shell進程,變數就會丟失。

局部變數又三種定義方式:

變數名一般以字母、數字、下劃線組成,其中以字母開頭。

為了更好的說明上面定義的三種方式,即不加引號、加單引號、加雙引號的區別,以下面的例子說明:

上述a、b、c輸出為:

在上面的基礎上如果變成下面的例子:

a、b、c的輸出有時什麼呢?

從上面的例子中可以看出第一種定義a變數的方式(不帶引號),內容一般為簡單連續的數字、字元串等;第二種定義b變數的方式(單引號)所見即所得,內容原樣輸出;第三種定義c變數的方式(雙引號),輸出變數時引號中變數會經過解析後輸出。

所以,腳本中單純的數字可以不使用引號,但是其它普通字元串盡量使用雙引號。

系列教程:

Python虛擬環境搭建-學習視頻教程-騰訊課堂ke.qq.com

⑸ Shell基本腳本命令使用教程

1、本地變數:用戶私有變數,只有本用戶可以訪問,保存在家目錄的 .bash_profile、.bashrc文件中
2、全局變數:所有用戶都可以使用,保存在 /etc/profile 文件中
3、用戶自定義變數:用戶自定義,比如腳本中的變數
定義變數格式: 變數名=值 (=兩邊不能有空格)
字元串用單引號或者雙引號引起來

shell支持正則表達式的常見命令:grep、sed、awk。

sed 是一個行(流)編輯器,非互動式的對文件內容進行增刪改查操作

awk 能夠集過濾、提取、運算為一體,它的工作方式是讀取數據,將每一行數據視為一條記錄,每條記錄以欄位分隔符分成若干欄位,然後輸出各個欄位的值。平行命令還有 gawk、pgawk、dgawk。

⑹ shell腳本變數的定義與賦值

定義變數
Shell 支持以下三種定義變數的方式:
variable=value
variable='value'
variable="value"

variable 是變數名,value 是賦給變數的值。如果 value 不包含任何空白符(例如空格、Tab 縮進等),那麼可以不使用引號;如果 value 包含了空白符,那麼就必須使用引號包圍起來。使用單引號和使用雙引號也是有區別的,稍後我們會詳細說明。

注意,賦值號=的周圍不能有空格,這可能和你熟悉的大部分編程語言都不一樣。

Shell 變數的命名規范和大部分編程語言都一樣:
變數名由數字、字母、下劃線組成;
必須以字母或者下劃線開頭;
不能使用 Shell 里的關鍵字(通過 help 命令可以查看保留關鍵字)。

變數定義舉例:
url=http://c.biancheng.net/shell/
echo $url
name='C語言中文網'
echo $name
author="嚴長生"
echo $author
使用變數
使用一個定義過的變數,只要在變數名前面加美元符號$即可,如:
author="嚴長生"
echo $author
echo ${author}
變數名外面的花括弧{ }是可選的,加不加都行,加花括弧是為了幫助解釋器識別變數的邊界,比如下面這種情況:
skill="Java"
echo "I am good at ${skill}Script"
如果不給 skill 變數加花括弧,寫成echo "I am good at $skillScript",解釋器就會把 $skillScript 當成一個變數(其值為空),代碼執行結果就不是我們期望的樣子了。

推薦給所有變數加上花括弧{ },這是個良好的編程習慣。
修改變數的值
已定義的變數,可以被重新賦值,如:
純文本復制
url="http://c.biancheng.net"
echo ${url}
url="http://c.biancheng.net/shell/"
echo ${url}
第二次對變數賦值時不能在變數名前加$,只有在使用變數時才能加$。