一、shell定義變數時,變數名不加美元符號,如:your_name=「rose」
變數名和等號之間不能有空格
命名只能使用英文本母,數字和下劃線,首個字元不能以數字開頭
中間不能有空格,可以使用下劃線(_)
不能使用標點符號
不能使用bash裡的關鍵字(最下方有關鍵字表)
符合條件的示例:
runoob
ld_path
_var
var2
二、使用乙個定義過的變數,只要在變數名前面加美元符號即可
your_name=「rose」三、已定義的變數,可以被重新定義echo $your_name
echo $(括號可有可無)
your_name=「rose」四、刪除變數:echo $your_name
your_name=「jack」
echo $your_name
輸出結果是:
rose
jack
使用unset命令可以刪除變數五、變數型別,執行shell時,會同時存在三種變數:unset variable_name
變數被刪除後不能再次使用,unset不能刪除唯讀變數
字串是shell程式設計中最常用最有用的資料型別,字串可以用單引號,也可以用雙引號,也可以不用引號。
一、獲取字串長度:
string=「abcd」二、提取子字串:echo $
輸出結果:4
string=「runnob is a great site」三、查詢子字串:echo $(string:1:4)
輸出結果:unno
(字元上方對應的是01234…,把1位置的字元當做第乙個,計數4個,返回)
查詢字元i或o的位置(哪個字元先出現就計算哪個)
string="runoob is a great site"
echo `expr index "$string" io`
輸出結果:4
一、讀取陣列元素:
valuen=$二、使用@符號可以獲取陣列中所有元素:
echo $三、獲取陣列長度:
length=$四、()和{}的區別:length=$
()表示在"nested sub-shell"中劃分乙個命令群組,如果我們希望裡面的命令對之前和之後的設定不影響的話,就要用(),反之,用{}。
例1:
$cat shell.sh; ./shell.sh
#! /bin/bash
line="123 25 36522"
(line="wwww"
echo "$line"
)echo "$line"
輸出結果:
wwww
123 25 36522
例2: $cat shell.sh; ./shell.sh
#! /bin/bash
line="123 25 36522"
echo "$line"
輸出結果:
wwww
wwww
假設定義了乙個變數為:
**如下:
file=/dir1/dir2/dir3/my.file.txt
可以用$分別替換得到不同的值:
$:刪掉第乙個 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt
$:刪掉最後乙個 / 及其左邊的字串:my.file.txt
$:刪掉第乙個 . 及其左邊的字串:file.txt
$:刪掉最後乙個 . 及其左邊的字串:txt
$:刪掉最後乙個 / 及其右邊的字串:/dir1/dir2/dir3
$:刪掉第乙個 / 及其右邊的字串:(空值)
$:刪掉最後乙個 . 及其右邊的字串:/dir1/dir2/dir3/my.file
$:刪掉第乙個 . 及其右邊的字串:/dir1/dir2/dir3/my
記憶的方法為:
#是 去掉左邊(鍵盤上#在 $ 的左邊)
%是去掉右邊(鍵盤上% 在$ 的右邊)
單一符號是最小匹配;兩個符號是最大匹配
$:提取最左邊的 5 個位元組:/dir1
$:提取第 5 個位元組右邊的連續5個位元組:/dir2
也可以對變數值裡的字串作替換:
$:將第乙個dir 替換為path:/path1/dir2/dir3/my.file.txt
$:將全部dir 替換為 path:/path1/path2/path3/my.file.txt
shell 和其他程式語言一樣,支援多種運算子,包括:
具體參考:
關鍵字表
命令含義
!保留字,邏輯非
:不做任何事,只做引數展開
.讀取檔案並在shell中執行它
alias
設定命令或命令列別名
bg將作業置於後台執行
bind
將關鍵字序列與readline函式或巨集**
break
保留字,跳出for、while、until、select迴圈
builtin
呼叫命令的內建命令格式,而禁用同名的函式。或者同名的擴充套件命令
case
保留字,多重選擇
cd切換當前工作目錄
command
找出內建和外部命令;尋找內建命令而非同名函式
continue
保留字,到達下次for、while、until、select迴圈
declare
宣告變數定義變數屬性
dirs
顯示當前儲存的列表
disown
將作業從列表中移除
do保留字,for、while、until、select迴圈的一部分
done
保留字,for、while、until、select迴圈的一部分
echo
列印引數
elif
保留字,if結構的一部分
else
保留字,if結構的一部分
enable
開啟和關閉內建命令
esac
保留字,case的一部分
eval
將引數作為命令再次處理一遍
exec
以特定程式取代shell或為shell改變i/o
exit
退出shell
export
將變數宣告為環境變數
fc與歷史命令一起執行
fg將作業置於後台執行
fi保留字,if迴圈的一部分
function
定義乙個函式
for保留字,for迴圈的一部分
getops
處理命令列選項
hash
記錄並指定命令的路徑名
help
顯示內建命令的幫助資訊
history
顯示歷史資訊
if保留字,if迴圈的一部分
in保留字,case、for、select迴圈的一部分
jobs
顯示後台執行的作業
kill
向程序傳送訊號
let使變數執行算術運算
local
定義區域性變數
logout
從shell中登出
popd
從目錄棧中彈出目錄
pushd
將目錄壓入棧
pwd顯示當前工作目錄
read
從標準輸入中讀取一行
readonly
將變數定義為唯讀
return
從函式或指令碼返回
select
保留字,生成選單
set設定shell選項
shift
變換命令列引數
suspend
終止shell的執行
test
評估條件表示式
then
保留字,if結構的一部分
time
保留字,輸出統計出來的命令執行時間,其輸出格式由timeformat變數來控制
times
針對shell及其子shell,顯示使用者和系統cpu的時間和
trap
設定撲捉程式
type
確定命令的源
typeset
宣告變數,定義變數屬性,與declare等價
ulimit
設定和顯示程序占用的資源限制
umask
設定和顯示檔案許可權碼
unalias
取消別名定義
unset
取消變數或函式定義
until
保留字,一種迴圈結構
wait
等待後台作業完成
while
保留字,一種迴圈結構
bash shell指令碼執行方法總結
bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在 data shell目錄中並已有執行許可權。方法一 切換到shell指令碼所在的目錄 此時,稱為工作目錄 執行shell指令碼 cd data shell hello sh....
bash shell指令碼執行方法總結
bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在 data shell目錄中並已有執行許可權。方法一 切換到shell指令碼所在的目錄 此時,稱為工作目錄 執行shell指令碼 cd data shell hello sh ...
Bash Shell字串操作總結
1.取長度 str abcd expr length str 4echo 4expr str 4 一般使用第二種比較多 2.查詢子串的位置 str abc expr index str a 1 expr index str b 2 expr index str x 0 expr index str ...