1、shell腳本中變量的定義和引用
(1)變量的定義
(a)shell變量中的變量名可以字母、數字、下划線組成,但數字不能作為變量名的第一個字符。
(b)通過賦值符等於“=”來定義一個變量的值
eg:
myname = 'galley' #字符串類型,不解析任何字符
course = “asdfgh” #雙引號內部會解析$和反斜杠特殊字符
sum =100; price = 123
now_date = `date` #反引號執行系統命令
shell的變量類型只有字符串類型,所以當不用引號引起來的時候,要確保變量的值不包特殊的符號,如空格符、美元、&符號。
(2)變量的引用
(a)變量的引用,使用美元符號$來加變量名,來引用一個變量的值。
如:定義變量:programe_name= "httpd"(變量名與等號之間不要有空格)
引用變量:echo $ programe_name
echo $ {programe_name}


(b)變量名外面的花括號
是可以選的,加花括號的目的是為了幫助解釋器識別變量的邊界,比如下面這種情況:

(3)變量值的特殊符號引用


2、shell環境變量、局部變量以及預定義變量
(1)環境變量
(a)環境變量一般指在操作系統中用來指定操作系統運行環境的一些參數,如PATH、PWD、USER、當前使用的SHELL名稱等。
(b)常見的環境變量:
PATH:系統路徑
HOME:當前用戶home目錄
HISTSIZE:保存歷史命令記錄的參數
LOGNAME:當前用戶登錄名
HOSTNAME:主機名稱,若應用程序要用到主機名的話,一般是從這個環境變量中取得
SHELL:當前用戶用的是哪一種shell
LANG/LANGUAGE:和語言相關的環境變量,使用多種語言的用戶可以修改此環境變量
MAIL:當前用戶的郵件存放目錄
(a)查看環境變量
env:顯示所有的環境變量
echo $PATH:顯示某個環境變量的值

(2)局部變量
(a)在shell腳本中由用戶自定義的變量。
shell腳本中定義的變量作用域是從被定義的地方開始,到shell結束為止,起作用域為本腳本,離開本腳本,變量無效。
(b)在用戶登錄的shell中定義的變量,重新登錄之后該變量消失。
(3)預定義變量
(a)預定義變量和環境變量類似,也是在shell一開始是就定義了的,所不同的是,用戶只能根據shell的定義來使用這些變量,不能改變它。所有的預定義變量都是由$和另一個符號組成的,常用的shell預定義變量有:
$# 位置參數的數量 (/bin/sh test.sh 1 2 3)
$* 所有位置參數的內容
$? 命令執行后返回的狀態 #0表示成功 非0表示失敗
$$ 當前進程的進程號
$! 后台運行的最后一個進程號
$0 當前執行的進程名

3、腳本的輸入和輸出
(1)echo 輸出
(a)echo命令發送數據到標准的輸出設備,數據采用的是字符串的方式,echo命令可以輸出一個變量。
(b)echo的兩個重要參數:
-e 識別輸出內容里面的轉義序列
-n 忽略結尾的換行

(2)printf輸出
(a)和echo的功能類似,printf也可以輸出變量,printf還可以按照格式輸出變量
但是需要注意:
a)、printf的默認輸出沒有換行,換行需要自己加“\n”
b)、printf支持格式化輸出
(3)read輸入
read命令行讀取標准輸入設備的下一行,標准輸入中的新一行到換行符前的所有字符會被讀取,並賦值給對應的變量。


(4)<<按行輸入
(a)“<<”符用作每行的命令輸入來操作數據庫
(b)自動連接ftp服務器來下載數據
