#字符串截取
str="string"
str=${str1 :-1} #必定要空格,這是倒數最後一個
假設有變量 str=http://www.aaa.com/123.htm.
1. # 號截取,刪除左邊字符,保留右邊字符。
echo ${str#*//}
其中 str 是變量名,# 號是運算符,*// 表示從左邊開始刪除第一個 // 號及左邊的全部字符
即刪除 http://
結果是 :www.aaa.com/123.htm
2. ## 號截取,刪除左邊字符,保留右邊字符。
echo ${str##*/}
3. %號截取,刪除右邊字符,保留左邊字符
echo ${str%/*}
4. %% 號截取,刪除右邊字符,保留左邊字符
echo ${str%%/*}
5. 從左邊第幾個字符開始,及字符的個數
echo ${str:0:5}
6. 從左邊第幾個字符開始,一直到結束。
echo ${str:7}
7. 從右邊第幾個字符開始,及字符的個數
echo ${str:0-7:3}
8. 從右邊第幾個字符開始,一直到結束。
echo ${str:0-7}shell
替換字符
rpe=""
match=""
output=${str/$match/$rpe}bash
#命令行執行結果保存到變量
var=`cmdLine`函數
if
if[] =,!=
fi #endif
#字符串直接不等
if[$m_dir!="swap"]
str1 = str2 當兩個串有相同內容、長度時爲真
str1 != str2 當串str1和str2不等時爲真
-n str1 當串的長度大於0時爲真(串非空)
-z str1 當串的長度爲0時爲真(空串)
str1 當串str1非空時
if 語句格式
if then
elif then
else
fispa
函數
函數名和」{「之間必須有空格,shell對空格變態的敏感
後來的聲明會覆蓋以前的聲明 .net
function funname ()
funname () #不帶任何參數。
{
action;
[return int;]
}
說明:
二、參數返回,能夠顯示加:return 返回,若是不加,將以最後一條命令運行結果,做爲返回值
函數中,定義的變量,函數執行後,腳本執行過程都有效
local做爲臨時變量就沒有必要將做用域聲明那麼廣,以避免引發意想不到的衝突。
local var0命令行
#複製包括隱藏文件
cp -ax ./* /mnt/$newpart
#刪除全部
rm -rf /mnt/$newpartcode
#重命名原/$m_dir目錄
mv /$m_dir /$m_dir.oldhtm
對文本指定行修改
sed作用域
腳本參數爲
$1
$0 ---------- 當前腳本的文件名(不帶路經,帶擴展名 .sh )xx.sh
$n ---------- 返回第n個參數。( n>0 )
$# ---------- 統計傳入的變量個數? e.g. ./xx.sh p1 p2 ? ? 輸出2
$*? ---------- 列出全部參數 。" $* " 總體列出
$@---------- 列出全部參數 。"$@" 一一列出字符串
退出腳本
exit argv #exit 1
#多行註釋
: ' #: + 空格 + 單引號 ... '
比較穩妥的做法:
<<'***' ... ***