Shell 字串操作符例項

2021-10-05 16:09:16 字數 4481 閱讀 4431

表示式

含義$parameter變數未宣告,取預設值word

$parameter變數未宣告或值為空時,取預設值word

$parameter變數未宣告,則取預設值word

$parameter變數未宣告或值為空時,取預設值word

$parameter變數未宣告, 取值為空,否則取值為word

$parameter變數宣告, 取值為word,否則取值為空

$parameter變數未宣告, 標準錯誤輸出word且退出 shell

$parameter取值為空, 標準錯誤輸出word且退出 shell

$匹配所有以prefix開頭且宣告的變數

$匹配所有以prefix開頭且宣告的變數

$$parameter的長度

$從左邊指定位置offset開始,擷取後面所有字串

$從左邊指定位置offset開始,擷取指定長度length字串

$從右邊開始,刪除最短匹配pattern的子字串

$從右邊開始,刪除最長匹配pattern的子字串

$從左邊開始,刪除最短匹配pattern的子字串

$從左邊開始,刪除最長匹配pattern的子字串

$從右邊開始,替換第一次出現匹配項patternstring

$替換所有匹配項patternstring

$替換開頭匹配pattern字串為string

$替換結尾匹配pattern字串為string

$開頭第乙個小寫字母轉換為大寫

$所有小寫字母轉換為大寫

$開頭第乙個大寫字母轉換為小寫

$所有大寫字母轉換為小寫

可以使用sh -v teststring.sh命令來執行如下指令碼,檢視原始命令及輸出內容,為了方便區分命令和內容,其中輸出內容以深藍色顯示。

# 例項指令碼

$ cat teststring.sh

#!/bin/bash

# 字串操作符例項

# 判斷作業系統,解決 mac下 echo 不支援「-e」引數問題if[

["$(

uname)"

!="darwin"]]

;then

ee="-e"

fi# var 變數未宣告

echo

$"\033[36mvar 變數未宣告,輸出為空: $\033[0m"

# 變數未宣告,取預設值

echo

$"\033[36mvar 變數未宣告,則取預設值:$\033[0m"

echo

$"\033[36mvar 變數未宣告,則取預設值:$\033[0m"

# 變數未宣告或取值為空時,取預設值

# 變數未宣告,取預設值

echo

$"\033[36mvar2 變數未宣告,則取預設值:$\033[0m"

echo

$"\033[36mvar2 變數未宣告,則取預設值:$\033[0m"

# 取值為空時

var3=

echo

$"\033[36mvar3 變數宣告,但值為空時,取預設值:$\033[0m"

echo

$"\033[36mvar3 變數宣告,但值為空時,取預設值:$\033[0m"

# 變數未宣告,值為空;宣告了為設定值

echo

$"\033[36mvar4 變數未宣告,值為空:$\033[0m"

var5=daodaotest5

echo

$"\033[36mvar5 變數宣告,取設定值:$\033[0m"

# 變數未宣告或取值為空時,列印設定資訊且程式退出

var6=daodaotest6

echo

$"\033[36mvar6 變數宣告且取值,不列印設定資訊:$\033[0m"

# 變數未宣告或取值為空時,列印設定資訊且程式退出

# 為了指令碼繼續執行注釋掉

#echo $ "\033[36mvar7 變數未宣告,列印設定資訊:$\033[0m"

#var8=

#echo $ "\033[36mvar8 取值為空,列印設定資訊:$\033[0m"

# 通過字首字元匹配宣告過的變數名

x1=1

x2=2

x3=3

echo

$"\033[36m通過字首字元匹配宣告過的變數名:$\033[0m"

echo

$"\033[36m通過字首字元匹配宣告過的變數名:$\033[0m"

url=

""## 字串長度

echo

$"\033[36m字串內容:$\033[0m"

echo

$"\033[36m字串長度:$\033[0m"

## 字串擷取

# 字串位置擷取

echo

$"\033[36m從左邊指定位置開始,擷取後面所有字串:$\033[0m"

echo

$"\033[36m從左邊指定位置開始,擷取指定長度字串:$\033[0m"

echo

$"\033[36m從右邊指定位置長度開始,擷取後面所有字串(注意「:」右邊有空格):$\033[0m"

echo

$"\033[36m從右邊指定位置長度開始,擷取後面所有字串(同上,推薦):$\033[0m"

echo

$"\033[36m從右邊指定位置長度開始,擷取後面所有字串(同上,推薦):$\033[0m"

echo

$"\033[36m從右邊指定位置開始,擷取指定長度字串(注意「:」右邊有空格):$\033[0m"

echo

$"\033[36m從右邊指定位置開始,擷取指定長度字串(同上,推薦):$\033[0m"

echo

$"\033[36m從右邊指定位置開始,擷取指定長度字串(同上,推薦):$\033[0m"

## 擷取不匹配的字串,即刪除匹配的字串

echo

$"\033[36m從右邊開始,刪除最短匹配字串:$\033[0m"

echo

$"\033[36m從右邊開始,刪除最長匹配字串:$\033[0m"

echo

$"\033[36m從左邊開始,刪除最短匹配字串:$\033[0m"

echo

$"\033[36m從左邊開始,刪除最長匹配字串:$\033[0m"

## 匹配項替換

echo

$"\033[36m從右邊開始,替換第一次出現匹配項:$\033[0m"

echo

$"\033[36m替換所有匹配項:$\033[0m"

echo

$"\033[36m替換開頭匹配字串:$\033[0m"

echo

$"\033[36m替換結尾匹配字串:$\033[0m"

param=daodaotest

# macos zsh 不支援

echo

$"\033[36m開頭第乙個小寫字母轉換為大寫:$\033[0m"

echo

$"\033[36m所有小寫字母轉換為大寫:$\033[0m"

param=daodaotest

# macos zsh 不支援

echo

$"\033[36m開頭第乙個大寫字母轉換為小寫:$\033[0m"

echo

$"\033[36m所有大寫字母轉換為小寫:$\033[0m"

操作符 字串操作符 和 型別轉換操作符

一 字串操作符 對於 的使用,當所有值都是數字的時候,執行計算處理 當有乙個是字元型別的時候,就將數字轉換為string字串進行拼接處理。二 型別轉換操作符 public class text 結果 int above 0.7 0 math.round above 0.7 1 int below 0...

SAP 字串操作符

操作符 說明co 操作字串1中每個字元都在操作字串2中存在,則表示式為true,反之為false.表示式為true時sy fdpos 操作字串1的長度,為false時,sy fdpos 操作字串1中不在操作字串2中的字元所在作字串1中第乙個位置。cn操作字串1中不是每個字元都在操作字串2中存在,則表...

PowerShell 字串操作符

格式化操作符 f 在powershell文字操作符中非常重要,經常被用來增強數字型別和日期型別的可讀性 diskettes per cd f 720mb 1.44mb 500 diskettes per cd所有的基本操作符形式都大同小異,要處理的資料位於操作符的左右兩邊,然後通過操作符建立連線。例...