Shell教程—Shell打印输出命令

在Linux中有两个常见的Shell输出命令echoprintf,他们都可以打印,但是又有些许差别,接下来我们就来了解一下他们吧。

一、echo命令

echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串的标准输出。命令格式:

echo arg

echo命令的常见用于如下:

(1)打印普通字符

echo "Are you OK?"

#也可以不写双引号,效果是一样的
echo Are you OK?

(2)显示转义字符

#与上面的不同之处是这里加上-e参数之后会对转义字符进行转义
echo -e "Are you ok?\n\n"

(3)显示变量的值

#!/usr/bin
let a=100
#使用$变量名可以获取变量的值
echo "a is $a"

(4)显示命令的执行结果

#!/usr/bin
url=www.easyblog.top
# 先从url字符串中的0索引位置往后数6个字符截取之后打印
echo `url:0:6` # 也可以这么写 echo ${url:0:6}

二、ptintf命令

学过C语言的同学应该对C中的标准输出函数printf不陌生,几乎编程一入门第一个了解的是main函数,第二个可能就是printf函数了,Linux中的printf 命令模仿 C 程序库(library)里的 printf() 程序。printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。

printf 命令的语法

printf  format-string  [arguments...]

参数说明:

  • format-string: 为格式控制字符串
  • arguments: 为参数列表。

总体上来说,printf命令和C的printf()函数作用类似。这里对比C语言printf()函数来说明一下不同之处:

  • (1)printf 命令 不用加括号
  • (2)format-string 可以没有引号,但最好加上,单引号双引号均可。

实例:

#!/bin/bash
#printf没有自动回车,因此需要在末尾加上回车,它对转义字符是自动转移的
printf "hello world!\n"
#和上面的效果类似
printf 'hello world!\n'
#错误写法,只会打印hello
#printf hello world!\n
  • (3)参数多于格式控制符(%)时,format-string 可以重用,可以将所有参数都转换。
  • (4)arguments 使用空格分隔,不用逗号。
#!/bin/bash
#上面的错误写法可以这么改写
printf "%s %s\n" hello word #类似C中的printf("%s %s\n","hello word");

#格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s Are you OK? Ok Or not ok?
printf "%d" 1 2 3 4 5
printf "\n"
printf "%d %d %d\n" 1 2 3 4 5 6 7 8 9

#当arguments为空的时候,会有默认值填充
printf "%s %d\n"

#引用变量
url=www.easyblog.top
printf "This website is %s.\n" $url

#如果应用的变量类型不合法会报错,并且会有默认的值
printf "The first program always print %s %d\n" hello world

执行结果:


剩下的printf命令还有一些格式替代符以及转移字符,这里就不详细的说了,基本和C语言中的printf函数类似。

总结

当我们需要简单的输出一下结果的时候使用echo就够了,很简单,也没有繁琐的参数,但是当我们需要格式化输出的时候,printf命令将是不二之选。

留言区

还能输入500个字符