日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

和即將用到Shell的人們談?wù)別cho命令和printf 命令

 大文豪賢斌學(xué)長 2020-05-02

Shell echo命令

Linux的echo命令, 在shell編程中極為常用, 在終端下打印變量value的時候也是常常用到的, 因此有必要了解下echo的用法。其主要用于字符串的輸出。命令格式:

# echo [Options] [String]

方括號中的項目是可選的。字符串可以定義為字符的有限序列(如字母,數(shù)字,符號,標(biāo)點(diǎn)符號)。

當(dāng)echo命令不帶任何選項或字符串使用時,它會在顯示屏上返回一個空白行,后面換一行跟上命令提示符。這是因?yàn)榘聪禄剀囨I就是發(fā)送一個信號給系統(tǒng)以開始一個新行,而echo重復(fù)了該信號。

# 該命令的一般格式為:echo [ -n ] 字符串

其中選項-n表示輸出文字后不換行;字符串能加引號,也能不加引號。

用echo命令輸出加引號的字符串時,將字符串原樣輸出;用echo命令輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸出,各字符串之間用一個空格分割。

Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用于字符串的輸出。

您可以使用echo實(shí)現(xiàn)更復(fù)雜的輸出格式控制。

顯示普通字符串:

echo "It is a test"

這里的雙引號完全可以省略,以下命令與上面實(shí)例效果一致:

echo It is a test

顯示轉(zhuǎn)義字符

選項:

-n 不換行輸出

-e 啟用反斜線轉(zhuǎn)義解釋

-E 禁用反斜線轉(zhuǎn)義解釋(默認(rèn))

功能說明:顯示文字。

語   法:echo [-ne][字符串] 或 echo [--help][--version]

補(bǔ)充說明:echo會將輸入的字符串送往標(biāo)準(zhǔn)輸出。輸出的字符串間以空白字符隔開, 并在最后加上換行號。

參   數(shù):-n 不要在最后自動換行 。-e 若字符串中出現(xiàn)以下字符,則特別加以處理,而不會將它當(dāng)成一般文字輸出:

\a 發(fā)出警告聲;

\b 刪除前一個字符;

\c 最后不加上換行符號;

\f 換行但光標(biāo)仍舊停留在原來的位置;

\n 換行且光標(biāo)移至行首;

\r 光標(biāo)移至行首,但不換行;

\t 插入tab;

\v 與\f相同;

\\ 插入\字符;

\nnn 插入nnn(八進(jìn)制)所代表的ASCII字符;

–help 顯示幫助

–version 顯示版本信息

echo "\"It is a test\""

結(jié)果將是:

"It is a test"

同樣,雙引號也可以省略

顯示變量

read 命令從標(biāo)準(zhǔn)輸入中讀取一行,并把輸入行的每個字段的值指定給 shell 變量

#!/bin/sh

read name

echo "$name It is a test"

以上代碼保存為 test.sh,name 接收標(biāo)準(zhǔn)輸入的變量,結(jié)果將是:

[root@www ~]# sh test.sh

Good #標(biāo)準(zhǔn)輸入

Good It is a test #輸出

顯示換行

echo -e "Good!\n" # -e 開啟轉(zhuǎn)義

echo "It is a test"

輸出結(jié)果:

Good!

It is a test

顯示不換行

#!/bin/sh

echo -e "Good! \c" # -e 開啟轉(zhuǎn)義 \c 不換行

echo "It is a test"

輸出結(jié)果:

Good! It is a test

顯示結(jié)果定向至文件

echo "It is a test" > myfile

原樣輸出字符串,不進(jìn)行轉(zhuǎn)義或取變量,用單引號就可以做到。

echo '$name\"'

輸出結(jié)果:

$name\"

顯示命令執(zhí)行結(jié)果

echo `date`

注意:這里使用的是反引號`,而不是單引號'。

結(jié)果將顯示當(dāng)前日期

Wednesday March 20 12:21:28 CST 2019

常用情景

Linux的echo命令, 在shell編程中極為常用, 在終端下打印變量value的時候也是常常用到。

比如:echo可用作顯示注釋,用于一些批命令中需要注釋給用戶看的地方,比如前一條命令執(zhí)行會花很長時間,常會用echo顯示一條信息讓用戶知道這個時候比較慢,稍微等待一會。

在Linux中echo命令用來在標(biāo)準(zhǔn)輸出上顯示一段字符,比如:

echo "the echo command test!"

這個就會輸出“the echo command test!”這一行文字!

echo "the echo command test!">a.sh

這個就會在a.sh文件中輸出“the echo command test!”這一行文字!該命令的一般格式為:echo [ -n ] 字符串其中選項n表示輸出文字后不換行;字符串能加引號,也能不加引號。用echo命令輸出加引號的字符串時,將字符串原樣輸出;用echo命令輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸出,各字符串之間用一個空格分割。

Shell printf 命令

使用printf的腳本比使用echo移植性好。printf 使用引用文本或空格分隔的參數(shù),外面可以在printf中使用格式化字符串,還可以制定字符串的寬度、左右對齊方式等。默認(rèn)printf不會像 echo 自動添加換行符,我們可以手動添加 \n。

printf 命令的語法:

printf format-string [arguments...]

參數(shù)說明:

format-string: 為格式控制字符串

arguments: 為參數(shù)列表。

實(shí)例如下:

$ echo "Hello, Shell"

Hello, Shell

$ printf "Hello, Shell\n"

Hello, Shell

$

接下來,我來用一個腳本來體現(xiàn)printf的強(qiáng)大功能:

#!/bin/bash

# author: Agile Tao

printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg

printf "%-10s %-8s %-4.2f\n" 楊球 男 72.1234

printf "%-10s %-8s %-4.2f\n" 武松 男 38.6543

printf "%-10s %-8s %-4.2f\n" 歐陽克 女 22.9876

執(zhí)行腳本,輸出結(jié)果如下所示:

姓名 性別 體重kg

楊球 男 72.12

武松 男 38.65

歐陽克 女 22.99

%s %c %d %f都是格式替代符

%-10s 指一個寬度為10個字符(-表示左對齊,沒有則表示右對齊),任何字符都會被顯示在10個字符寬的字符內(nèi),如果不足則自動以空格填充,超過也會將內(nèi)容全部顯示出來。

%-4.2f 指格式化為小數(shù),其中.2指保留2位小數(shù)。

%d %s %c %f 格式替代符詳解

d:Decimal 十進(jìn)制整數(shù) 對應(yīng)位置參數(shù)必須是十進(jìn)制整數(shù),否則報錯!

s:String 字符串 對應(yīng)位置參數(shù)必須是字符串或者字符型 否則報錯

c:Char 字符 對應(yīng)位置參數(shù)必須是字符串或者字符型 否則報錯

f: Float 浮點(diǎn) 對應(yīng)位置參數(shù)必須是數(shù)字型 否則報錯

實(shí)例:

#!/bin/bash

# author:Agile Tao

# format-string為雙引號

printf "%d %s\n" 1 "abc"

# 單引號與雙引號效果一樣

printf '%d %s\n' 1 "abc"

# 沒有引號也可以輸出

printf %s abcdef

# 格式只指定了一個參數(shù),但多出的參數(shù)仍然會按照該格式輸出,format-string 被重用

printf %s abc def

printf "%s\n" abc def

printf "%s %s %s\n" a b c d e f g h i j

# 如果沒有 arguments,那么 %s 用NULL代替,%d 用 0 代替

printf "%s and %d \n"

執(zhí)行腳本,輸出結(jié)果如下所示:

1 abc

1 abc

abcdefabcdefabc

def

a b c

d e f

g h i

j

and 0

printf的轉(zhuǎn)義序列

序列說明

\a 警告字符,通常為ASCII的BEL字符

\b 后退

\c 抑制(不顯示)輸出結(jié)果中任何結(jié)尾的換行字符(只在%b格式指示符控制下的參數(shù)字符串中有效),而且,任何留在參數(shù)里的字符、任何接下來的參數(shù)以及任何留在格式字符串中的字符,都被忽略

\f 換頁(formfeed)

\n 換行

\r 回車(Carriage return)

\t 水平制表符

\v 垂直制表符

\\ 一個字面上的反斜杠字符

\ddd 表示1到3位數(shù)八進(jìn)制值的字符。僅在格式字符串中有效

\0ddd 表示1到3位的八進(jìn)制值字符

實(shí)例

$ printf "a string, no processing:<%s>\n" "X\nY"

a string, no processing:<X\nY>

$ printf "a string, no processing:<%b>\n" "X\nY"

a string, no processing:<X

Y>

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多