Shell程式設計基礎學習之五:重定向與指令碼除錯
我們經常用到shell修改配置檔案,將一些配置匯入到具體的文字就特別重要了
玩轉檔案描述符合重定向
用下面的方法,可以將輸出文字重定向或者
儲存到一個文字中 一個 > 清空,兩個 >> 追加
echo "This is a simple text1" >> temp.txt
當一個命令發生錯誤並退回時,它會返回一個非0的退出狀態
退出狀態可以從特殊變數 $ 中獲得,
在命令執行後立即執行echo,就可以列印退出狀態
要在終端顯示又要重定向資料的副本作為後續的命令的stdin --->都可以用tee 來實現;
command | tee FILE1 FILE2
[hadoop@hadoop scripts]$ cat sh01.sh | tee out.txt
除錯指令碼
預備知識:不需要特殊工具:列印出指令碼接受的引數和輸入
bash -x script.sh
判斷符號[ ]
[hadoop@hadoop scripts]$ [ -z "$HOME" ];echo $?
1
[hadoop@hadoop scripts]$ echo $HOME
/home/hadoop
判斷是否相等
[hadoop@hadoop scripts]$ [ "$HOME" == "$MAIL" ]&& echo true || echo false
false
啟動跟蹤除錯shell指令碼
bash -x script.sh
我們也可以要求只關注指令碼的某些部分的命令及引數的列印輸出
set -x 在執行的時候顯示引數和命令
set +x 禁止除錯
set -v 當命令進行時顯示輸入
set +v 禁止列印輸入
結果
[hadoop@hadoop scripts]$ bash -x sh09.sh
+ PATH=
+ export PATH
+ network1=192.168.136
sh09.sh: line 7: syntax error near unexpected token `('
sh09.sh: line 7: `for i in (1..10)'
[hadoop@hadoop scripts]$ vi sh09.sh
[hadoop@hadoop scripts]$ bash -x sh09.sh
+ PATH=
+ export PATH
+ network1=192.168.136
+ for i in '{1..10}'
+ echo 192.168.136.1
192.168.136.1
+ for i in '{1..10}'
+ echo 192.168.136.2
192.168.136.2
+ for i in '{1..10}'
+ echo 192.168.136.3
192.168.136.3
+ for i in '{1..10}'
+ echo 192.168.136.4
192.168.136.4
+ for i in '{1..10}'
+ echo 192.168.136.5
192.168.136.5
+ for i in '{1..10}'
+ echo 192.168.136.6
192.168.136.6
+ for i in '{1..10}'
+ echo 192.168.136.7
192.168.136.7
+ for i in '{1..10}'
+ echo 192.168.136.8
192.168.136.8
+ for i in '{1..10}'
+ echo 192.168.136.9
192.168.136.9
+ for i in '{1..10}'
+ echo 192.168.136.10
192.168.136.10
函式和引數
定義函式:
function fname(){
statements;
}
或者
fname(){
statements
}
只需要使用函式名就可以呼叫某個函式:
fname; #執行函式
引數可以傳遞給函式,並由指令碼經行訪問:
fname arg1 arg2; #傳遞引數
引數訪問方法
fname()
{
echo $1,$2; #訪問引數1和2
echo "$@"; #以列表的方式一次性列印所有的引數(常用)
echo "$*"; #類似於$@但是引數被作為單個實體
return 0; #返回值
}
相關文章
- shell指令碼程式設計基礎指令碼程式設計
- Linux Bash Shell學習(七):shell程式設計基礎——執行Shell指令碼、functionLinux程式設計指令碼Function
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- Shell程式設計基礎學習之六:sed 入門程式設計
- Linux基礎五(shell指令碼)Linux指令碼
- Shell程式設計基礎學習之四:語法結構程式設計
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- 【Linux學習筆記29】shell指令碼基礎Linux筆記指令碼
- 《Linux命令列與shell指令碼程式設計大全》第五章理解shellLinux命令列指令碼程式設計
- Shell指令碼基礎指令碼
- Linux_day06_01_Shell指令碼程式設計_Bash基礎Linux指令碼程式設計
- Linux Bash Shell學習(八):shell程式設計基礎——string操作Linux程式設計
- Shell程式設計-基礎程式設計
- shell程式設計基礎程式設計
- Shell程式設計基礎學習之三:變數和test程式設計變數
- Shell程式設計基礎學習之一:正規表示式程式設計
- Shell 指令碼程式設計陷阱指令碼程式設計
- Linux Shell程式設計(26)——程式碼塊重定向Linux程式設計
- 零基礎學習PDB命令列除錯Python程式碼命令列除錯Python
- shell程式設計基礎二程式設計
- shell 指令碼的除錯問題指令碼除錯
- shell指令碼程式設計之選擇控制結構指令碼程式設計
- shell指令碼程式設計筆記指令碼程式設計筆記
- 7.shell指令碼程式設計指令碼程式設計
- 初識shell指令碼程式設計指令碼程式設計
- Java網路程式設計基礎學習與整理Java程式設計
- shell基礎-輸出重定向
- [shell基礎]——I/O重定向
- Linux命令列與shell指令碼程式設計大全(第三版)之錯別字Linux命令列指令碼程式設計
- Linux之19——Shell程式設計基礎詳解Linux程式設計
- Shell程式設計基礎學習之二:變數的基本認知程式設計變數
- shell程式設計五程式設計
- Shell指令碼程式設計初體驗指令碼程式設計
- BASH Shell的指令碼程式設計(轉)指令碼程式設計
- Shell指令碼程式設計規範與變數(shell指令碼必須要知道的規矩!)指令碼程式設計變數
- 兩道shell指令碼的程式設計題(sed與awk)指令碼程式設計