每天学一点儿shell:shell字符串变量的基本操作
生活随笔
收集整理的這篇文章主要介紹了
每天学一点儿shell:shell字符串变量的基本操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- shell變量的定義
- 定義變量
- 變量命名規范
- 變量的使用
- 字符串的操作
- 單引號、雙引號
- 其他常見操作
- 獲取字符串長度
- 截取字符串
- 獲取字符串位置
shell變量的定義
定義變量
變量命名規范
| ! | 保留字,邏輯非 |
| : | 不做任何事,只做參數展開 |
| . | 讀取文件并在shell中執行它 |
| alias | 設置命令或命令行別名 |
| bg | 將作業置于后臺運行 |
| bind | 將關鍵字序列與readline函數或宏捆綁 |
| break | 保留字,跳出for、while、until、select循環 |
| builtin | 調用命令的內建命令格式,而禁用同名的函數。或者同名的擴展命令 |
| case | 保留字,多重選擇 |
| cd | 切換當前工作目錄 |
| command | 找出內建和外部命令;尋找內建命令而非同名函數 |
| continue | 保留字,到達下次for、while、until、select循環 |
| declare | 聲明變量定義變量屬性 |
| dirs | 顯示當前存儲的列表 |
| disown | 將作業從列表中移除 |
| do | 保留字,for、while、until、select循環的一部分 |
| done | 保留字,for、while、until、select循環的一部分 |
| echo | 打印參數 |
| elif | 保留字,if結構的一部分 |
| else | 保留字,if結構的一部分 |
| enable | 開啟和關閉內建命令 |
| esac | 保留字,case的一部分 |
| eval | 將參數作為命令再次處理一遍 |
| exec | 以特定程序取代shell或為shell改變I/O |
| exit | 退出shell |
| export | 將變量聲明為環境變量 |
| fc | 與歷史命令一起運行 |
| fg | 將作業置于后臺運行 |
| fi | 保留字,if循環的一部分 |
| for | 保留字,for循環的一部分 |
| function | 定義一個函數 |
| getops | 處理命令行選項 |
| hash | 記錄并指定命令的路徑名 |
| help | 顯示內建命令的幫助信息 |
| history | 顯示歷史信息 |
| if | 保留字,if循環的一部分 |
| in | 保留字,case、for、select循環的一部分 |
| jobs | 顯示后臺運行的作業 |
| kill | 向進程傳送信號 |
| let | 使變量執行算術運算 |
| local | 定義局部變量 |
| logout | 從Shell中注銷 |
| popd | 從目錄棧中彈出目錄 |
| pushd | 將目錄壓入棧 |
| pwd | 顯示當前工作目錄 |
| read | 從標準輸入中讀取一行 |
| readonly | 將變量定義為只讀 |
| return | 從函數或腳本返回 |
| select | 保留字,生成菜單 |
| set | 設置Shell選項 |
| shift | 變換命令行參數 |
| suspend | 終止Shell的執行 |
| test | 評估條件表達式 |
| then | 保留字,if結構的一部分 |
| time | 保留字,輸出統計出來的命令執行時間,其輸出格式由TIMEFORMAT變量來控制 |
| times | 針對Shell及其子Shell,顯示用戶和系統CPU的時間和 |
| trap | 設置撲捉程序 |
| type | 確定命令的源 |
| typeset | 聲明變量,定義變量屬性,與declare等價 |
| ulimit | 設置和顯示進程占用的資源限制 |
| umask | 設置和顯示文件權限碼 |
| unalias | 取消別名定義 |
| unset | 取消變量或函數定義 |
| until | 保留字,一種循環結構 |
| wait | 等待后臺作業完成 |
| while | 保留字,一種循環結構 |
變量的使用
使用變量只需要在前面加$即可
[root@hadoop-master ~]# my_name="leo825" [root@hadoop-master ~]# echo $my_name leo825 [root@hadoop-master ~]# echo ${my_name} leo825花括號加不加都行,主要視情況而定,如果會引起編譯器歧義需要添加來區分變量邊界
[root@hadoop-master ~]# echo "my name is ${my_name}" my name is leo825刪除變量
[root@hadoop-master ~]# unset my_name [root@hadoop-master ~]# echo ${my_name}[root@hadoop-master ~]#字符串的操作
單引號、雙引號
[root@hadoop-master ~]# my_name="leo825" [root@hadoop-master ~]# echo '單引號輸出:${my_name}' 單引號輸出:${my_name} [root@hadoop-master ~]# echo "雙引號輸出:${my_name}" 雙引號輸出:leo825 [root@hadoop-master ~]# echo "雙引號輸出:\"${my_name}\"" 雙引號輸出:"leo825"根據上面的比較總結如下:
其他常見操作
獲取字符串長度
[root@hadoop-master ~]# echo ${my_name} leo825 [root@hadoop-master ~]# echo ${#my_name} 6截取字符串
截取格式,這個是從左邊開始計數:
${string: start :length}其中,string 是要截取的字符串,start是起始位置(從左邊開始,從0開始計數),lenth是要截取的長度(省略的話表示直到字符串的末尾)
[root@hadoop-master ~]# echo ${my_name} leo825 [root@hadoop-master ~]# echo ${my_name:1:2} eo [root@hadoop-master ~]# echo ${my_name:1} eo825截取格式,這個是從右邊開始計數:
${string: 0-start :length}這種格式比上一種多了0-,這個是固定寫法,代表是從字符串右邊開始計數的。
這種方式要注意兩點
從右開始計數不太好理解,這個步驟是首先從右邊開始第1個向左查第3個位是8,然后向右數2位就是82
獲取字符串位置
[root@hadoop-master ~]# echo ${my_name} leo825 [root@hadoop-master ~]# echo `expr index "$my_name" 8` 4以上腳本中 “`” 是反引號,而不是單引號 “’”,不要看錯了,需要執行指令的都需要反引號,就是Esc鍵正下方的那個鍵。
總結
以上是生活随笔為你收集整理的每天学一点儿shell:shell字符串变量的基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS7下Hadoop集群搭建
- 下一篇: CentOS7下安装pssh并使用