#! /bin/bash #設置只讀變數,只讀變數不可修改myUrl="http://www.baidu.com"readonly myUrl #刪除變數,unset不能刪除只讀變數myUrl1="http://www.sina.com"unset myUrl1 #運行shell時會同時存在三種變數 ...
#! /bin/bash
#設置只讀變數,只讀變數不可修改
myUrl="http://www.baidu.com"
readonly myUrl
#刪除變數,unset不能刪除只讀變數
myUrl1="http://www.sina.com"
unset myUrl1
#運行shell時會同時存在三種變數
#局部變數,環境變數,shell變數
#單引號:單引號中不能有變數,不能有單引號
#雙引號:雙引號里可以有變數,可以出現轉義字元。
your_name="qinjx"
str="Hello,I know your name is \"$your_name\" ! \n"
#拼接字元串
your_name="cye"
greeting="Hello,"$your_name" !"
greeting_1="Hello,$your_name"
echo $greeting $greeting_1
#獲取字元串長度
string="abcdefg"
echo ${#string} #輸出 7
#提取子字元串,從第二個字元開始截取4個字元。
string="runoob is a great site"
echo ${string:1:4} #輸出unoo
#查找子字元串,查找i或者s的位置, 以下腳本中 "`" 是反引號,而不是單引號 "'",
string="runoob is a great company"
echo `expr index "$string" is` #輸出8
#數組,定義數組
array_name=(value0,value1,value2,value3)
#讀取數組,${數組名[下標]}
valuen=${array_name[n]}
#使用@符號,可以獲取數組中的所有元素
echo ${array_name[@]}
#獲取數組的長度
length=${#array_name[@]}
#或者
length=${#array_name[*]}
#取得數組單個元素的長度
lengthn=${#array_name[n]}
#shell傳遞參數,在執行shell腳本向腳本傳遞參數時,腳本內獲取參數的格式為:$n,n為一個數字,1代表執行腳本的第一個參數,2為執行腳本的第二個參數。
echo "shell 傳遞參數實例"
echo "執行的文件名:$0"
echo "第一個參數為:$1"
echo "第二個參數為:$2"
echo "第三個參數為:$3"
#調用時為
#chmod +x test.sh
#./test.sh 1 2 3
#結果為:
#shell 傳遞參數實例
#執行的文件名:./test.sh
#第一個參數為:1
#第二個參數為:2
#第三個參數為:3
#輸出輸入重定向
command > file 將輸出重定向到 file。
command < file 將輸入重定向到 file。
command >> file 將輸出以追加的方式重定向到 file。
n > file 將文件描述符為 n 的文件重定向到 file。
n >> file 將文件描述符為 n 的文件以追加的方式重定向到 file。
n >& m 將輸出文件 m 和 n 合併。
n <& m 將輸入文件 m 和 n 合併。
"<< tag" 將開始標記 tag 和結束標記 tag 之間的內容作為輸
0 是標準輸入(STDIN),1 是標準輸出(STDOUT),2 是標準錯誤輸出(STDERR)
/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;如果嘗試從該文件讀取內容,那麼什麼也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。
$ command > /dev/null 2>&1