2020年2月26日 星期三

Linux script 與 sorce scitp 差異

觀念
執行script時,預設使用子shell,若要在原shell執行,要使用
. script檔 或 source script檔
子shell會繼承父shell的環境變數,不會繼承父shell的變數
檢查目錄是否存在
檢查檔案是否存在
在 Shell Script 檔案和函式往往需要透過傳入參數來設定執行程式的內容。在 Shell Script 支援許多好用的特殊變數,可以方便我們透過使用變數方式來設置程式執行的流程。
指令描述註解
$0目前的檔案檔名
$nn 從 1 開始,代表第幾個參數
$#傳遞到程式或函式目前有幾個參數
$*傳遞到程式或函式所有參數
$@類似 $* 但是在被雙引號包含時有些許不同
$?上一個指令退出狀態或是函式的返回值
$$目前 process PID

於 Bash shell echo 輸入換行字元的寫法

echo 可以使用 -e 的參數,或者直接使用 printf 來達成,範例如下:
  1. $ echo -e "1\n2\n3\n4\n5\n" > filename
  2. $ printf "hello\nworld\n" > filename
  3. $ printf "\n" > filename
  4. $ cat filename # 就可以看到換行的內容
  5. printf "\n" | iconv -f utf-8 -t utf-16 >> filename # UTF-16 的 newline 換行
    printf "\n" | iconv -f utf-8 -t utf-16 | xxd 和 printf "\n" | xxd 可以看到 UTF-8 和 UTF-16 的差異
另外一種是把 \n 獨立出來,不過這不太好記憶,先列範例即可
  • $ echo $'hello\nworld' > filename
  • $ echo Hello$'\n'world > filename

解決shell指令碼中 echo 怎麼寫入換行到檔案




Linux echo命令25個實用案例


1. 前言
echo是一種最常用的與廣泛使用的內置於Linux的bash和C shell的命令,通常用在腳本語言和批處理文件中來在標準輸出或者文件中顯示一行文本或者字符串。




Linux echo命令
echo命令用於在shell中列印shell變量的值,或者直接輸出指定的字符串。linux的echo命令,在shell編程中極為常用, 在終端下列印變量value的時候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。




echo命令默認輸出
2. echo命令選項
echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。
該命令的一般格式為: echo [ -n ] 字符串
其中選項n表示輸出文字後不換行;字符串能加引號,也能不加引號。用echo命令輸出加引號的字符串時,將字符串原樣輸出;用echo命令輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸出,各字符串之間用一個空格分割。
功能說明:顯示文字。
語 法:echo [-ne][字符串]或 echo [--help][--version]
補充說明:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 並在最後加上換行號。
參 數:-n 不要在最後自動換行
-e 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般
文字輸出:
\a 發出警告聲;
\b 刪除前一個字符;
\c 最後不加上換行符號;
\f 換行但光標仍舊停留在原來的位置;
\n 換行且光標移至行首;
\r 光標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\ 插入\字符;
\nnn 插入nnn(八進位)所代表的ASCII字符;
–help 顯示幫助
–version 顯示版本信息
3. echo使用實例演示
3.1 列印字符串string
Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用於字符串的輸出。命令格式:
[root@zcwyou ~]# echo string
您可以使用echo實現更複雜的輸出格式控制。
3.2 列印一段字符:
[root@zcwyou ~]# echo "It is a test"
這裡的雙引號完全可以省略,以下命令與上面實例效果一致:
[root@zcwyou ~]# echo It is a test




linux使用echo列印內容
3.3 結合轉義符
把特殊字符轉義為普通字符
[root@zcwyou ~]# echo "\"It is a test\""
結果將是:
"It is a test"




linux把特殊字符轉義為普通字符
同樣,雙引號也可以省略
3.4 查詢變量
read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變量
#!/bin/sh
read name 
echo "$name It is a test"
以上代碼保存為 zcwyou.sh,name接收標準輸入的變量,結果將是:
[root@zcwyou ~]# sh zcwyou.sh
OK #標準輸入
OK It is a test #輸出
3.5 換行
使用轉義符\n換行
[root@zcwyou ~]# echo -e "OK! \n" # -e
[root@zcwyou ~]# echo "It is a test"
輸出結果:
OK!
It is a test
3.6 輸出不換行
使用轉義符 \c 不換行
腳本文件內容:
#!/bin/sh
echo -e "OK! \c" # -e 
echo "It is a test"
輸出結果:
OK! It is a test
3.7 回顯結果定向至文件
[root@zcwyou ~]# echo "It is a test" > test.log
檢查:
cat test.log
3.8 原樣輸出字符串,不進行轉義或取變量(用單引號)
[root@zcwyou ~]# echo '$name\"'
輸出結果:
$name\"
3.9 顯示命令執行結果
[root@zcwyou ~]# echo `date`
注意: 這裡使用的是反引號 , 而不是單引號 '。 結果將顯示當前日期 Mon Nov 19 00:45:23 EST 2018 ¨K44K ¨G11G 會輸出下面的文本: hi hello ¨K45K 比如,聲明變量x並給它賦值為10。 ¨G12G 會輸出它的值: ¨G13G ¨K46K 『-e『後帶上'\b'會刪除字符間的所有空格。 注意: Linux中的選項『-e『扮演了轉義字符反斜線的翻譯器。 ¨G14G ¨K47K 『-e『後面的帶上『\n』行會在遇到的地方作為新的一行 ¨G15G ¨K48K 『-e『後面跟上『\t』會在空格間加上水平制表符。 ¨G16G 也可以同時使用換行『**\n**『與水平制表符『**\t**『 ¨G17G ¨K49K 『-e『後面跟上『\v』會加上垂直制表符。 ¨G18G 也可以同時使用換行『**\n**『與垂直制表符『**\v**『 ¨G19G 注意: 你可以按照你的需求連續使用兩個或者多個垂直制表符,水平制表符與換行符。 ¨K50K 『-e『後面跟上『\r』來指定輸出中的回車符。(LCTT 譯註:會覆寫行開頭的字符) ¨G20G ¨K51K 『-e『後面跟上『\c』會抑制輸出後面的字符並且最後不會換新行。 ¨G21G ¨K52K ¨G22G Tecmint is a community of Linux Nerds Tecmint is a community of Linux[root@zcwyou ~]# ¨K53K 『-e『後面跟上『\a』選項會聽到聲音警告。 ¨G23G 注意: 在你開始前,請先檢查你的音量設置。 ¨K54K ¨G24G ¨K55K 比如,讓我們假設你想要列印所有的『.jpeg『文件,使用下面的命令。 ¨G25G ¨K56K ¨G26G 檢查: ¨G27G ¨K57K ¨G28G This is red text ![linux echo輸出彩色文字](http://images.linuxrumen.com/linux/linuxecho/linuxecho05.png-1)\e[1;31m將顏色設置為紅色 \e[0m` 將顏色重新置回
顏色碼:重置=0,黑色=30,紅色=31,綠色=32,黃色=33,藍色=34,洋紅=35,青色=36,白色=37
3.24 使用echo設置輸出的背景色
[root@zcwyou ~]# echo -e "\e[1;42mGreed Background\e[0m"
Greed Background




linux echo使用echo設置輸出的背景色
顏色碼:重置=0,黑色=40,紅色=41,綠色=42,黃色=43,藍色=44,洋紅=45,青色=46,白色=47
3.25 使用echo輸出閃動的文字
[root@zcwyou ~]# echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
紅色數字處還有其他數字參數:0 關閉所有屬性、1 設置高亮度(加粗)、4 下劃線、5 閃爍、7 反顯、8 消隱




linux echo使用echo輸出閃動的文字

沒有留言:

張貼留言