shell腳本變數加
1. 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}
第二次對變數賦值時不能在變數名前加$,只有在使用變數時才能加$。
2. shell腳本中變數前加$表示什麼意思
shell腳本執行過程中
把第一個字元串作為腳本名稱(或程序名稱)處理,第二、第三。。。都作為參數處理。shell會將這些參數默認的賦給變數
1
2
3
。。。所以當你echo
$1
$2的時候看到的就是參數變數的值。
解答一下$#的問題:這里$#是計算輸入參數的個數
還有一些有用的演算法:$@
代表所有輸入的參數;$*
同上
3. 如何在shell腳本中使用變數
1、linux shell中的變數一般定義格式為:var=value。其中var是變數名稱,=是賦值,value是給變數賦的值。比如下面的變數定義。
a=12;
b="helloworld"
2、注意變數名稱的第一個字元不可以是數字,但是可以是下劃線。如下示例則為非法的變數名。
3、要使用變數的值,在變數前面加上$符號即可。比如下面的示例:
123=123//這是錯誤的變數名稱
_123=123//這是合法的。

4. shell 腳本里的變數怎麼加1
shell 腳本里變數加一方式如下六種:
1、第一種整型變數自增方式
a=$(($a+1))
echo$a
2、第二種整型變數自增方式a=$[$a+1]
echo$a
a=`expr$a+1`
echo$a
leta++
echo$a
5、第五種整型變數自增方式leta+=1
echo$a
6、第六種整型變數自增方式((a++))
echo$a

(4)shell腳本變數加擴展閱讀:
基本上shell分兩大類:
1、圖形界面shell(Graphical User Interface shell 即 GUI shell)
應用最為廣泛的 Windows Explorer (微軟的windows系列操作系統),還有也包括廣為人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更強大的CDE、GNOME、KDE、 XFCE。
2、命令行式shell(Command Line Interface shell ,即CLI shell)
bash / sh / ksh / csh / zsh(Unix/linux 系統),cmd.exe/ 命令提示字元(Windows NT 系統),Windows PowerShell(支持 .NET Framework 技術的 Windows NT 系統),傳統意義上的shell指的是命令行式的shell,以後如果不特別註明,shell是指命令行式的shell。
5. 如何在shell腳本中使用變數
shell中的變數是邊定義邊使用的,比如要用到一個變數aa:
#定義變數
aa="hello world"
下面就可以使用變數了:
#列印變數
echo "aa=$aa"
使用變數時在變數前加上$。
6. 如何在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用戶是#,對於普通用戶是$
7. Shell腳本中使用變數作為for循環范圍
我們知道在shell腳本中,可以通過 {x..y} 這樣的表達式來表示一個從x到y的數列
這個用法在shell腳本里叫做 Brace Expansion 。
因此我們常利用這個表達式來作為循環的次數,如:
可以得到從1到10的輸出結果。
但是如果我們想輸出從1到一個變數的結果,這個變數從其他地方獲取:
得到的結果卻是
放棄使用 {x..y} 這樣的表達式:
seq 命令的原理就不說了,這里說說為什麼不能在 { } 中使用變數。其實原因寫在bash的man手冊中:
Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces.
大意是說,Bash中會最先展開 { } 中的內容,這個時候 $NUM 還不會被具體的值替代,所以是 i 在循環中讀取的是 『{1..$NUM}』 的一個完整的字元串,輸出時 $NUM 會被10替代,就有了 '{1..10}' 這樣的結果。
關於Bash中的展開 (expansion) 順序,其實有不少值得注意的地方,一不留神可能就會踩坑,還是老前輩那句:腳本猛於虎。
8. 如何在shell腳本中修改添加替換指定文件中的內容
1、可以藉助.shell命令執行另一個腳本文件或者用變數保存。比如a.sh和b.sh,a.sh中調用b.sh的代碼,一起輸出"hello world"的字元串。b.sh的代碼如下echo " world!"。

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

10. Linux_Shell腳本編程之設置環境變數
1、export 變數名 = 變數值(功能描述:將shell變數輸出為環境變數/全局變數)
2、source 配置文件 (功能描述:讓修改後的配置信息立即生效)
3、echo $變數名 (功能描述:查詢環境變數的值)
1、在/etc/profile文件中定義TOMCAT_HOME環境變數
2、查看環境變數TOMCAT的值
3、在另外一個shell程序中使用 TOMCAT_HOME
注意:文檔多行注釋
