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

posted @ 2020-10-31 22:55  陈树义  阅读(3399)  评论(0编辑  收藏  举报