把linux命令編成.sh (二)

#字符串截取
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

#多行註釋

: '    #: + 空格 + 單引號

...

'

比較穩妥的做法

<<'***'
...

***
相關文章
相關標籤/搜索