shell中 echo 和printf 都能用作输出,printf可以算是echo的增强版
显示转义字符
echo \""abcdef\""
>>> "abcdef"
显示变量
age=23
echo "my age is $age"
>>>my name is 23
在使用的过程中,为了避免引起歧义,多使用${age}
显示换行
echo “ok\n“
echo "my name is liming"
>>>ok
>>>my name is liming
显示结果重定向
e cho "my name is limng "> file1
printf 格式化输出语句,但是后面必须加上回车换行符,不像echo 不用加
printf “acbdef\n"
>>>abcdef
>>>
# format-string为双引号
$ printf "%d %s\n" 1 "abc"
1 abc
# 单引号与双引号效果一样
$ printf ‘%d %s\n‘ 1 "abc"
1 abc
# 没有引号也可以输出
$ printf %s abcdef
abcdef
# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
$ printf %s abc def
abcdef
$ 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
$ printf "The first program always prints‘%s,%d\n‘" Hello Shell-bash: printf: Shell: invalid numbe
The first program always prints ‘Hello,0‘
$