shell腳本變數定義
① Shell基本腳本命令使用教程
1、本地變數:用戶私有變數,只有本用戶可以訪問,保存在家目錄的 .bash_profile、.bashrc文件中
2、全局變數:所有用戶都可以使用,保存在 /etc/profile 文件中
3、用戶自定義變數:用戶自定義,比如腳本中的變數
定義變數格式: 變數名=值 (=兩邊不能有空格)
字元串用單引號或者雙引號引起來
shell支持正則表達式的常見命令:grep、sed、awk。
sed 是一個行(流)編輯器,非互動式的對文件內容進行增刪改查操作
awk 能夠集過濾、提取、運算為一體,它的工作方式是讀取數據,將每一行數據視為一條記錄,每條記錄以欄位分隔符分成若干欄位,然後輸出各個欄位的值。平行命令還有 gawk、pgawk、dgawk。
② 如何在shell腳本中使用變數
在網路中 搜索 linux 系統中使用變數 關鍵詞 ,有問題網路。 下面是我查的示例。
顯示環境變數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用戶是#,對於普通用戶是$
③ Linux_Shell腳本編程之設置環境變數
1、export 變數名 = 變數值(功能描述:將shell變數輸出為環境變數/全局變數)
2、source 配置文件 (功能描述:讓修改後的配置信息立即生效)
3、echo $變數名 (功能描述:查詢環境變數的值)
1、在/etc/profile文件中定義TOMCAT_HOME環境變數
2、查看環境變數TOMCAT的值
3、在另外一個shell程序中使用 TOMCAT_HOME
注意:文檔多行注釋
④ shell變數定義【學習總結】
簡單來說就是將需要執行的命令保存到文本中,按照順序執行。它是解釋型的,意味著不需要編譯。
變數名的定義規則:
變數名嚴格區分大小寫,不能有特殊字元,不能以數字開頭,等號兩邊不能有任何空格,變數名盡量做到見名知意
1、基本方式
直接賦值給一個變數,變數名=變數值
2、命令執行結果賦值給變數
3、互動式定義變數(read)
目的: 讓用戶自己給變數賦值,比較靈活
常見選項釋義:
-p 定義提示用戶的信息
-n 定義字元數(限制變數值的長度)
-s 不顯示(不顯示用戶輸入的內容)
-t 定義超時時間,默認單位為秒(限制用戶輸入變數值的超時時間)
4、定義有類型的變數(declare)
目的: 給變數做一些限制,固定變數的類型,比如:整型、只讀
用法:declare 選項 變數名=變數值
常用選項:
-i 將變數看成整數 declare -i A=123
-r 定義只讀變數 declare -r B=hello
unset 變數名
相同點:引號中的內容可以作為一個整體
不同點:雙引號可以引用變數,單引號不能引用變數
* :匹配0個或者任意多個字元
? :任意單個字元
[a-z] :括弧內的任意單個字元
! :取反
{string,string,string} :匹配括弧裡面用逗號隔開的所有的字元串
{1..100} :匹配一個序列
案例:
1.腳本名稱 ***.sh
2.腳本內容
1)定義解析器
#!/bin/bash
#!/bin/env bash 優勢:會自動去找當前系統的解析器位置
2)注釋說明
#
3)程序本身
定義變數+基本命令+基本語法+思想
1、標准腳本執行方法 :相對路徑或者絕對路徑
前提:標准執行方式腳本必須要有 可執行許可權
2、非標準的執行方法 (不建議)
場景:查看腳本執行過程;或者腳本無法賦予可執行許可權
解析器 +腳本文件
⑤ shell變數的作用空間是什麼
Shell是一個用C語言編寫的程序,它是用戶使用Linux的橋梁。Shell既是一種命令語言,又是一種程序設計語言,涵蓋的知識點多且雜,卻是雲計算開發人員必須要掌握的技術之一。接下來就給大家梳理一下Shell變數相關的知識。
Linux Shell中的變數可以被指定為任意的數據類型,比如文本字元串或者數值。你也可以通過修改Shell中的變數來改變Shell的樣式。
Shell支持三種定義變數的方式:
variable=value
variable='value'
variable="value"
variable是變數名,value是賦給變數的值。如果value不包含任何空白符(例如空格、Tab縮進等),那麼可以不使用引號;如果value包含了空白符,那麼就必須使用引號包圍起來。注意,賦值號=的周圍不能有空格。
Shell變數的命名規范和大部分編程語言一樣:變數名由數字、字母、下劃線組成;必須以字母或者下劃線開頭;不能使用Shell里的關鍵字(通過help命令可以查看保留關鍵字)。
Linux中Shell變數分為系統變數和用戶自定義變數,系統變數包括$HOME、$PWD、$SHELL、$USER、echo $SHELL以及顯示當前Shell中所有變數set。
Shell自定義變數包括1)定義變數:變數=值;2)撤銷變數:unset變數;3)聲明靜態變數:readonly變數,注意不能unset;4)使用export把變數提升為全局環境變數,如/etc/profile中的TOMCAT_HOME變數,且在另外的/opt/tmp/shell/myShell.sh腳本中使用該環境變數。
Shell設置環境變數
基本語法:
1)export:變數名=變數值(功能描述:將shell變數輸出為環境變數)
2)source:配置文件(功能描述:讓修改後的配置文件立即生效)
3)echo:$變數名(功能描述:查詢環境變數的值)
單行注釋:#
多行注釋::<<!需要注釋的內容!
Shell腳本很適合處理純文本類型的數據,而Linux中幾乎所有的配置文件、日誌文件(如NFS、Rsync、Httpd、Nginx、MySQL等),以及絕大多數的啟動文件都是純文本類型的文件。Shell是運維人員必須要掌握的技能,此外還需要掌握Linux、信息安全、Docker容器等。
⑥ 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}
第二次對變數賦值時不能在變數名前加$,只有在使用變數時才能加$。
⑦ 如何正確在Linux Shell腳本中定義一個時間變數
1、創建腳本 test.sh,並入截圖內容。

⑧ 如何在shell腳本中使用變數
在shell腳本中變數的定義,只能以字母和下劃線開始,區分大小寫,可以包含數字、字母下劃線。
示例代碼,讀取用戶輸入到變數myvar,然後再輸入。
#!/bin/bash
echo "input myvar"
read myvar
echo "myvar is $myvar"
效果如下:

⑨ 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腳本中使用變數
shell腳本可以使用環境變數與自定義變數
當前的環境變數有哪些可以用env命令查看,
可在腳本中引用,例如 echo $HOME 而自定義變數可以再shell腳本中直接聲明和賦值,例如 var1=1 var1=$var1+1 echo $var1 其結果是 1+1
