1. 程式人生 > >centos中echo和printf命令

centos中echo和printf命令

centos中echo和printf命令

1.echo

後面的內容直接當做列印資訊輸出到終端

1.1 echo 輸出資訊不帶冒號

[[email protected] ~]$ echo 輸出資訊不帶冒號
輸出資訊不帶冒號

1.2 echo “輸出的資訊帶冒號”

[[email protected] ~]$ echo “輸出的資訊帶冒號”
輸出的資訊帶冒號

1.3 echo $(pwd)

[[email protected] ~] echo $(pwd)
/home/yl

[[email protected] ~] echo $(date +%Y-%m-%d” “%a” “%X )
2018-04-15 Sun 06:34:29 PM

網上有的說可以直接在雙引號裡面加單引號也可以,但是親測centos的不可以

[[email protected] ~]$ echo “‘pwd’”
‘pwd’

[[email protected] ~]$ echo ‘pwd’
pwd

2.printf

這個函式和C函式裡面的函式的用法差不多,不過作為命令輸出的時候可以更簡單

2.1 printf 直接列印字串不換行

[[email protected] ~]$ printf 直接列印字串不換行

直接列印字串不換行[[email protected] ~]$

2.2printf 直接列印字串換行\n

[[email protected] ~]$ printf 直接列印字串換行\n
直接列印字串換行

這裡在命令列裡要實現換行的話為兩個斜槓。可能是文字編輯器的原因,這裡現實的就是一個\n
這裡寫圖片描述

2.3 類似於C語言中printf的用法

printf 直接列印字串換行,格式控制%d%s,\n 5 hello

[[email protected] ~]$ printf 直接列印字串換行,格式控制%d%s,\n 5 hello
直接列印字串換行,格式控制5hello,

2.4 可以和C語言中printf用法很像,可以加冒號,但是不能加括號

[[email protected]

~] printf (“直接列印字串換行\n”);
-bash: syntax error near unexpected token `$’”\347\233\264\346\216\245\346\211\223\345\215\260\345\255\227\347\254\246\344\270\262\346\215\242\350\241\214\n””

[[email protected] ~]$ printf “直接列印字串換行\n”
直接列印字串換行

[[email protected] ~]$ printf “直接列印字串換行,%d,%s\n” 5 hello
直接列印字串換行,5,hello

參考其他資料:
原文地址:https://blog.csdn.net/Watson2016/article/details/52367945
1、echo指令
echo是Shell的一個內部指令,用於在螢幕上打印出指定的字串。命令格式:

echo arg
您可以使用echo實現更復雜的輸出格式控制。
顯示轉義字元

echo “\”It is a test\””
結果將是:
“It is a test”

雙引號也可以省略。
顯示變數

name=”OK”
echo “$name It is a test”
結果將是:
OK It is a test

同樣雙引號也可以省略。

如果變數與其它字元相連的話,需要使用大括號({ }):

mouth=8
echo “${mouth}-1-2009”
結果將是:
8-1-2009
顯示換行

echo “OK!\n”
echo “It is a test”
輸出:
OK!
It is a test
顯示不換行

echo “OK!\c”
echo “It is a test”
輸出:
OK!It si a test
顯示結果重定向至檔案

echo “It is a test” > myfile
原樣輸出字串
若需要原樣輸出字串(不進行轉義),請使用單引號。例如:

echo ‘$name\”’
顯示命令執行結果

echo date
結果將顯示當前日期

2、printf
printf 命令用於格式化輸出, 是echo命令的增強版。它是C語言printf()庫函式的一個有限的變形,並且在語法上有些不同。

注意:printf 由 POSIX 標準所定義,移植性要比 echo 好。

如同 echo 命令,printf 命令也可以輸出簡單的字串:

p r i n t f H e l l o , S h e l l \n H e l l o , S h e l l
printf 不像 echo 那樣會自動換行,必須顯式新增換行符(\n)。

printf 命令的語法:
printf format-string [arguments…]
format-string 為格式控制字串,arguments 為引數列表。

printf()在C語言入門教程中已經講到,功能和用法與 printf 命令類似,請檢視:C語言格式輸出函式printf()詳解

這裡僅說明與C語言printf()函式的不同:
printf 命令不用加括號
format-string 可以沒有引號,但最好加上,單引號雙引號均可。
引數多於格式控制符(%)時,format-string 可以重用,可以將所有引數都轉換。
arguments 使用空格分隔,不用逗號。

請看下面的例子:

format-string為雙引號

$ printf “%d %s\n” 1 “abc”
1 abc

單引號與雙引號效果一樣

$ printf ‘%d %s\n’ 1 “abc”
1 abc

沒有引號也可以輸出

$ printf %s abcdef
abcdef

格式只指定了一個引數,但多出的引數仍然會按照該格式輸出,format-string 被重用

p r i n t f a b c d e f printf “%s\n” abc def
abc
def
$ printf “%s %s %s\n” a b c d e f g h i j
a b c
d e f
g h i
j

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

$ printf “%s and %d \n”
and 0

如果以 %d 的格式來顯示字串,那麼會有警告,提示無效的數字,此時預設置為 0

p r i n t f T h e f i r s t p r o g r a m a l w a y s p r i n t s b a s h : p r i n t f : S h e l l : i n v a l i d n u m b e r T h e f i r s t p r o g r a m a l w a y s p r i n t s H e l l o , 0

注意,根據POSIX標準,浮點格式%e、%E、%f、%g與%G是“不需要被支援”。這是因為awk支援浮點預算,且有它自己的printf語句。這樣Shell程式中需要將浮點數值進行格式化的列印時,可使用小型的awk程式實現。然而,內建於bash、ksh93和zsh中的printf命令都支援浮點格式。