shell腳本的學習1-截取字符串

shell腳本中截取字符

假設有一個字符串變量爲var=http://www.aaa.com/123.html

  • 1.# 表示刪除相應字符的左邊字符,保留右邊字符比如:
echo=${var#*//} 表示刪除//左邊的字符,保留右邊的字符
輸出爲:www.aaa.com/123.html
  • 2.## 表示刪除從左往右最後一個(最右邊第一個)相應字符的左邊字符,保留其右邊的字符,比如:
echo=${var##*/}  表示刪除從左往右最後一個/左邊的字符,保留右邊的字符
輸出:123.html
  • 3.% 表示刪除從右往左第一個相應字符右邊字符,保留其左邊的字符,比如:
echo=${var%/*}  表示刪除從右往左第一個/字符後面(右邊)的字符,保留其左邊字符
輸出:http://www.aaa.com
  • 4.%% 表示刪除從右往左最後一個(最左邊第一個)相應字符右邊字符,保留其左邊的字符,比如:
echo=${var%%/*}  表示刪除刪除從右往左最後一個/(最左邊第一個/)的右邊字符,保留其左邊的字符
輸出:http:
  • 5.截取相應的字符
var=http://www.aaa.com/123.html

echo ${var:0:3}  表示輸出從左邊開始第0個字符開始(包含第0個字符),截取長度爲3的字符
輸出:htt

echo ${var:7} 表示從第7個字符開始(包含第7個字符),一直到結束
輸出:www.aaa.com/123.html

echo ${var:0-7:3} 表示輸出從右邊第7個字符以後開始(不包含第7個字符),長度爲3
輸出:23.

echo ${var:0-7} 表示輸出從右邊第7個字符開始(不包含第7個字符)以後
輸出:23.html

shell傳遞參數

  • 1.參數的顯示
#!/bin/bash
echo "Shell 傳遞參數實例!";
echo "執行的文件名:$0";
echo "第一個參數爲:$1";
echo "第二個參數爲:$2";
echo "第三個參數爲:$3";

echo "參數的個數是:$#"
echo "參數是:$*"

輸出:
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
執行的文件名:./test.sh
第一個參數爲:1
第二個參數爲:2
第三個參數爲:3

參數的個數是:3
參數是:1 2 3
  • 2.幾個處理參數的特殊字符
參數 說明
$# 傳遞到腳本的參數個數
$* 以一個單字符串顯示所有向腳本傳遞的參數。如”""" 1 2 n”的形式輸出所有參數。
$$ 腳本運行的當前進程ID號
$! 後臺運行的最後一個進程的ID號
$@ 使, @”用「”」括起來的情況、以”1 2” … “$n”的形式輸出所有參數
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
  • 3. @區別
    • 相同點:都是引用所有參數。
    • 不同點:只有在雙引號中體現出來。假設在腳本運行時寫了三個參數 1、2、3,,則 ” * ” 等價於 “1 2 3”(傳遞了一個參數),而 “@” 等價於 “1” “2” “3”(傳遞了三個參數)。
#!/bin/bash

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

輸出結果爲:
$ bash test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

shell中的數組

#!/bin/bash

array=(A B C D)
echo "the first string is:${array[0]}"  #第一個元素
echo "all string is:${arary[*]}" #數組中全部元素
echo "all string is:${arary[@]}" #數組中全部元素
echo "the length is:${#array[*]}" #數組的長度
echo "the length is:${#array[@]}" #數組的長度

輸出爲:
the first string is:A
all string is:A B C D
all string is:A B C D
the length is:4
the length is:4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章