📅  最后修改于: 2023-12-03 15:23:19.260000             🧑  作者: Mango
Shell 脚本是一种在 Linux 和 Unix 系统中非常常用的编程语言,可用于完成许多日常任务和自动化工作。在编写 Shell 脚本时,经常需要使用 echo
或 printf
等命令打印输出信息。
本文介绍如何在 Shell 脚本中打印输出。
echo
echo
命令是 shell 命令中最常用的命令之一,主要用于输出文本信息。
打印一行文本非常简单,只需要在 echo
命令后跟上需要输出的文本即可。
echo "Hello, world!"
输出:
Hello, world!
需要注意的是,echo
命令默认会在输出的文本末尾添加一个换行符,如果不需要添加,可以使用 -n
选项:
echo -n "Hello, "
echo "world!"
输出:
Hello, world!
在 Shell 脚本中,经常需要输出变量的值。可以使用 $
符号和变量名的方式来打印变量的值:
name="Shell-Bash"
echo "Hello, $name!"
输出:
Hello, Shell-Bash!
需要注意的是,echo
命令默认会对变量值进行字符串展开,如果变量的值中包含空格等特殊字符,可能会导致输出结果不符合预期。为了避免这种情况,可以使用引号将变量括起来:
greeting="Hello, World!"
echo "$greeting"
输出:
Hello, World!
如要在文本中添加单引号,可以使用双引号将文本括起来;如果要添加双引号,则需要使用反斜杠 \
来转义:
echo "Today is $(date)"
echo "She said, \"Hello.\""
输出:
Today is Sat Aug 28 16:48:13 CST 2021
She said, "Hello."
printf
printf
命令是类似于 C 语言的格式化输出函数,可以根据格式字符串和参数来生成输出结果。
printf
命令的格式字符串由普通字符和转换说明符组成,转换说明符以 %
符号开头。
下面是一些常用的转换说明符:
| 转换说明符 | 说明 |
|------------|----------------------------------------------------------------------------------------|
| %s
| 字符串 |
| %d
| 十进制整数 |
| %f
| 浮点数 |
| %e
| 科学计数法浮点数 |
| %x
| 十六进制整数,小写字母 |
| %X
| 十六进制整数,大写字母 |
| %o
| 八进制整数 |
| %c
| 单个字符 |
| %%
| 百分号 |
| %p
| 指针地址 |
| %u
| 无符号十进制整数 |
| %g
| 自动选择 %f
或 %e
输出浮点数,除非指定了精度或数据太大无法输出,则自动选择 %e
|
举个例子,下面的命令使用 printf
打印了一个格式化字符串:
#!/bin/bash
printf "Hello, %s! Today is %s.\n" "world" "$(date)"
输出:
Hello, world! Today is Sat Aug 28 16:48:13 CST 2021.
需要注意的是,在格式字符串中必须使用转义符 \n
来表示换行符,而不能直接使用换行符。
可以使用各种选项来自定义输出格式。
下面是一些常用的选项:
| 选项 | 说明 |
|------|--------------------------------------------------------|
| -
| 左对齐 |
| +
| 强制在数字前面添加 +
符号 |
| 0
| 数字左边填充 0
,而不是默认的空格 |
| .
| 指定浮点数保留的小数位数或字符串截取的长度 |
| -
| 宽度,指定输出的最小字符数或数值填充的最小字段宽度 |
举个例子,下面的命令使用 printf
打印了一个格式化的数字:
#!/bin/bash
value=123
printf "The value is %+10d\n" $value
输出:
The value is +123
在上面的命令中,%+10d
表示把 $value
的值格式化为十进制整数,并在前面添加 +
符号(如果是正数),左对齐,并在宽度不足 10 的情况下在左侧填充空格。
通过本文的介绍,你学会了如何在 Shell 脚本中使用 echo
和 printf
命令来打印输出信息。无论是简单的文本还是复杂的格式化字符串,都可以使用这两个命令来实现。现在,你可以更方便地编写 Shell 脚本完成各种任务了。