Shell 入門教程(八):如何打印字符串


文章首發於【陳樹義的博客園】,點擊跳轉到原文:https://www.cnblogs.com/chanshuyi/p/quick_start_of_shell_08_print_string.html

在 Shell 腳本中,我們可以使用 echo 命令或者 printf 命令來打印字符串。echo 適合用於簡單的打印,而 printf 則適用於統一縮進的復雜打印。

echo命令

在 Shell 語言中,一般使用 echo 命令來打印字符串。而 echo 命令后面跟着的字符串有好幾種形式:裸奔、單引號、雙引號。

第一種,裸奔。

所謂裸奔就是后面什么引用符號都不用加,直接寫上要輸出的字符串。

echo Hello, My Name is chenshuyi!

這種方式會直接輸出 echo 命令后的所有字符,例如上面會輸出:Hello, My Name is chenshuyi!。但這種方式有個缺陷,就是無法輸出分號;。因為當讀到分號的時候,程序會認為這一行代碼結束了。

echo Hello; I am chenshuyi

上面的命令的輸出結果是:

Hello
-bash: I: command not found

可以看到程序只輸出了 Hello,並把后面的I當成了一個命令。

第二種,單引號的引用方式。

str='Hello ! My Name is chenshuyi';
echo $str	

上面的語句成功輸出:Hello ! My Name is chenshuyi。但這種方式的缺陷是無法在字符串中引用變量。

NAME="chenshuyi"
str='Hello ! My Name is $NAME';
echo $str

上面的輸出結果是:Hello ! My Name is $NAME。可以看到我們無法打印出 NAME 變量的值。

第三種,雙引號的引用方式。

NAME="chenshuyi"
str="Hello! My Name is $NAME";
echo $str

輸出結果:Hello! My Name is chenshuyi。可以看到在雙引號的引用方式下,我們可以成功打印出 NAME 變量的值。但是這種方式也有其缺陷,就是無法直接打印出特殊字符,需要把特殊進行轉義。

簡單地說:如果你打印的語句沒有任何變量,那么直接和特殊字符,直接裸奔也未嘗不可。但如果有一些特殊字符,那么使用單引號可能更好。如果又有特殊字符,又需要引用變量,那么只能使用雙引號了。

printf命令

使用 printf 命令可以對齊打印字符串,對於閱讀比較友好。

#!/bin/bash
# author:陳樹義
# site:www.shuyi.me
 
printf "%-10s %-8s %-4s\n" 姓名 年齡 存款K  
printf "%-10s %-8s %-4.2f\n" 郭靖 30 52.20
printf "%-10s %-8s %-4.2f\n" 楊過 25 26.32
printf "%-10s %-8s %-4.2f\n" 郭芙 27 15.20

在這樣一個符號中%-10s,百分號是個標識符,-表示左對齊,數字10表示保留10位的長度,s表示其實一個字符串。

  • 對應的%-8s表示左對齊、保留 8 位,是字符串。
  • 對應的%-4.2f表示左對齊、保留 4 位、小數點保留兩位,是個浮點型數字。

在 printf 中的格式替代符一共有下面四個:

  • d: Decimal 十進制整數
  • s: String 字符串
  • c: Char 字符
  • f: Float 浮點

文章首發於【陳樹義的博客園】,點擊跳轉到原文:https://www.cnblogs.com/chanshuyi/p/quick_start_of_shell_08_print_string.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM