shell——shell輸入輸出
shell輸入輸出
echo命令
顯示字串
echo "It is a test"
顯示不換行
#!/bin/sh
echo -e "OK! \c" # -e 開啟轉義 \c 不換行
顯示結果定向至檔案
echo "It is a test" > myfile
原樣輸出字串,不進行轉義或取變數(用單引號)
echo '$name\n'
顯示命令執行結果
echo `data`
Thu Jul 24 10:08:46 CST 2014
printf 命令
printf 模仿C程式庫(library)裡的printf()程式。
printf命令的語法:
printf format-string [arguments...]
舉例:
1 #!/bin/bash
2
3 printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
4 printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
5 printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543
6 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
執行結果
姓名 性別 體重kg
郭靖 男 66.12
楊過 男 48.65
郭芙 女 47.99
格式替代符有:%s %c %d %f
%-10s指一個寬度為10個字元(-表示左對齊,沒有則表示右對齊),任何字元都會被顯示在10個字元寬的字元內,如果不足則自動以空格填充,超過也會將內容全部顯示出來。
%-4.2f指格式化為小數,其中.2指保留兩位小數。
printf轉義序列
序列 | 說明 |
---|---|
\a | 警告字元,通常為ASCII的BEL字元 |
\b | 後退 |
\c | 抑制(不顯示)輸出結果中任何結尾的換行字元(只在%b格式指示控制符下的引數字串中有效),而且,任何留在引數裡的字元、任何接下來的引數以及任何留在格式字串中的字元,都被忽略 |
\f | 換頁 |
\n | 換行 |
\r | 回車 |
\t | 水平製表位 |
\v | 垂直製表符 |
\ | 一個字面上的反斜槓字元 |
\ddd | 表示1到3位數八進位制的字元。僅在格式字串中有效 |
\0ddd | 表示1到3位的八進位制值字元 |
傳遞引數
可以在執行shell指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為:&n。n代表一個數字,1為執行指令碼的第一個引數,2為執行指令碼的第二個引數,以此類推…
例項
我們向指令碼傳遞三個引數,分別輸出,其中$0為執行的檔名(包含檔案路徑):
#!/bin/bash
echo "Shell 傳遞引數例項!";
echo "執行的檔名:$0";
echo "第一個引數為:$1";
echo "第二個引數為:$2";
echo "第三個引數為:$3";
為指令碼設定可執行許可權,並執行指令碼,輸出結果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞引數例項!
執行的檔名:./test.sh
第一個引數為:1
第二個引數為:2
第三個引數為:3
幾個特殊字元用來處理引數:
引數處理 | 說明 |
---|---|
$# | 傳遞到指令碼的引數個數 |
$* | 以一個單字串顯示所有向指令碼傳遞的引數。 |
$$ | 指令碼執行的當前 |
$! | 後臺執行的最後一個程式的ID號 |
$@ | 返回所有的引數不過,引數每一個引數被分割成一個字串 |
$- | 顯示shell使用的當前選項,與set命令功能相同 |
$? | 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤 |
#!/bin/bash
echo "Shell 傳遞引數例項!";
echo "第一個引數為:$1";
echo "引數個數為:$#";
echo "傳遞的引數作為一個字串顯示:$*";
執行指令碼,輸出結果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞引數例項!
第一個引數為:1
引數個數為:3
傳遞的引數作為一個字串顯示:1 2 3
∗ 和 *和 ∗和@的區別:
- 相同點:都是引用所有引數。
- 不同點:只有在雙引號中體現出來。假設在指令碼執行時寫了三個引數1、2、3, ∗ 等 價 於 傳 遞 " 123 " , 而 * 等價於傳遞"1 2 3",而 ∗等價於傳遞"123",而@等價於"1" “2” “3”
echo "-- \$* 演示 ---"
for i in "$*"; do
echo $i
done
echo "-- \$@ 演示 ---"
for i in "$@"; do
echo $i
done
執行結果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3
相關文章
- Shell輸入\輸出重定向
- shell自動化輸入
- shell指令碼(3)-格式化輸出指令碼
- linux改變shell的輸出顏色Linux
- 05 Shell read讀取控制檯輸入
- 『忘了再學』Shell基礎 — 6、Bash基本功能(輸入輸出重定向)
- Linux c程式中獲取shell指令碼輸出(如獲取system命令輸出)LinuxC程式指令碼
- shell中輸入字串和文字在同一行字串
- 輸入輸出
- python:動態不刷螢幕輸出python/shell實現Python
- 輸入輸出流
- 1.輸入輸出
- 【C++】輸入輸出C++
- 輸入輸出系統
- Java 輸入輸出流Java
- linux中的輸入與輸出管理(重定向輸入,輸出,管道符)Linux
- Linux shell中實現某一列交替輸出1和2Linux
- Linux shell指令碼中內聯輸入 <<- EOF和 <<EOF的區別Linux指令碼
- C語言之輸入輸出C語言
- 常用輸入輸出函式函式
- Java基礎輸入輸出Java
- C語言輸入輸出C語言
- 03 資料輸入-輸出
- 格式化輸入輸出
- 排序,檔案輸入輸出排序
- Java —— 標準輸入輸出Java
- 資料的輸入輸出
- python ----輸入輸出 變數Python變數
- Python輸入和輸出(IO)Python
- python 標準輸入輸出Python
- shell指令碼while迴圈、read讀取控制檯輸入與函式指令碼While函式
- 自動輸入密碼使用root許可權開啟shell指令碼密碼指令碼
- 1.變數and輸入輸出變數
- 格式化輸入和輸出
- 輸出輸入函式彙總函式
- 06Numpy輸入與輸出
- ACM的Python版輸入輸出ACMPython
- shell指令碼整合json數值輸出從而獲取硬體資訊指令碼JSON