shell脚本的字符串的输出echo和printf

在所有的计算机语言学习中,输入输出都是最基本的学习内容。而巧用输入输出也会让程序更灵活。shell脚本语言也是如此,应该说echo既有输出功能,也有输入的功能(重定向到文件)。printf应该只有输出功能,但在格式化输出方面有优势。比如:

echo "hello"  "world"

echo "hello \n world ";echo "good"

echo -e "hello \n world \c"    # -e 开启转义 \c 不换行

echo "与上面连接"

echo -n "hello"

echo "world"

echo "hello world" >test_output.txt

#>>

hello world
hello \n world
good
hello
world 与上面连接
helloworld

通过查看以上shell脚本的输出结果,最关键的要记住以下几点:

1. 每条echo语句结束,既可以有分号";",也可以没有。但如果想连续写2条以上脚本需要分号

2.参数-e 是为了转义字符串中的特殊字符,比如换行符"\n"。否则,换行符当做一般字符输出

3.参数-n 是为了让2条echo语句中间不换行,连接到一起输出

4. >  是输出重定向到文件。

对于变量内容的输出,也是很简单。但如果变量后面紧跟字符串,需要把变量用{}括起来表示边界。例如:

var="helo world";echo $var

var1="pretty"

echo ${var}good

echo $var$var1 - $var1

#>>>

hello world
hello worldgood
hello worldpretty - pretty

对于printf的输出功能,主要用于格式化。例如:

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876

#>>>

姓名   性别   体重kg
郭靖    男     66.12
杨过    男     48.65
郭芙   女      47.99

#%s %c %d %f 都是格式替代符,
%s 输出一个字符串,
%d 整型输出,
%c 输出一个字符,
%f 输出实数,以小数形式输出。

此外,printf 与echo有一点非常不同,对于echo来说,语句结束之后,自动会换行。除非用其他转义字符控制。

而printf默认是不换行的,而且printf中的字符串的换行符自动识别。

posted @ 2021-05-27 10:21  如知  阅读(1131)  评论(0编辑  收藏  举报