echo和printf的区别,printf叫什么

http://www.itjxue.com  2023-01-15 12:06  来源:未知  点击次数: 

Linux系统shell工具打印输出

Linux系统shell工具打印输出

shell脚本都是以#!/bin/bash开头;这是固定的写法,其中/bin/bash是bash命令的路径。那么Linux系统shell工具如何打印输出呢?跟我一起来看看吧!

一般都会通过chmod授予shell脚本的可执行权限。

在shell脚本中的打印输出通常会有echo和printf两种,前者会自动换行。

在shell中如果用双引号("")作为打印输出的内容时,如果双引号中有特殊字符需要在特殊字符前加上转义字符\,当然也可以使用单引号或者不使用引号直接输出,使用单引号或者不使用就不需要用到转义字符。

格式替代符

有一些常用的格式替代符会经常在打印输出中被用到,格式替代符只能用在printf输出中。

%-5s:表示5个字符宽度,其中的-表示左对齐

%-4.2f:其中的f表示浮点型,4.2代表长度为4个字符且小数点2位,如果小数点超过2会进行四舍五入,-表示左对齐。

整形:

%d:整数的参数会被转成一有符号的十进制数字

%u:整数的参数会被转成一无符号的十进制数字

%o:整数的参数会被转成一无符号的八进制数字

%x:整数的参数会被转成一无符号的十六进制数字,并以小写abcdef表示

%X:整数的参数会被转成一无符号的十六进制数字,并以大写ABCDEF表示

浮点型数:

%fdouble型的参数会被转成十进制数字,默认取小数点以下六位,四舍五入

%edouble型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的e来表示.

%E与%e作用相同,唯一区别是指数部分将以大写的'E来表示.

%gdouble型的参数会自动选择以%f或%e的格式来打印,其标准是根据欲打印的数值及所设置的有效位数来决定.

%G与%g作用相同,唯一区别在以指数形态打印时会选择%E格式.

字符及字符串:

%c读字符串的第一个字符

%s输出指定宽度的字符内容.

%p如果是参数是"void*"型指针则使用十六进制格式显示

打印输出

在写脚本的时候更多的会使用echo作为打印输出,且习惯性的会使用双引号。

echo

[root@localhosttmp]#echo"helloword"

helloword

printf

默认printf是不换行的

[root@localhosttmp]#printf"helloword"

helloword[root@localhosttmp]#

需要换行加上\n参数

[root@localhosttmp]#printf"helloword\n"

helloword

[root@localhosttmp]#

编写shell脚本

vimscrip.sh

#!/bin/bash

printf"%-5s%-10s%-4s\n"NoNameMark;

printf"%-5s%-10s%-4.2f\n"1aaa10.111;

printf"%-5s%-10s%-4.2f\n"2bbb20.146;

授予脚本执行权限:chmodu+xscrip.sh

如果使用echo就不能用格式替代符

#!/bin/bash

echoNoNameMark;

echo1aaa10.111;

echo2bbb20.146;

注意事项

在echo,printf中使用-e,-n参数时,-e,-n应该出现在命令行其它字符之前。

-e:如果要在echo的双引号使用转义序列作为参数得需要使用-e参数

-n:忽略末尾的换行符

不使用-e参数

[root@localhosttmp]#echo"1\n2"

1\n2

使用-e参数

[root@localhosttmp]#echo-e"1\n2"

转义序列:

/n:换行

/t:tab键

彩色输出

字体颜色包括:0=重置,30=黑色,31=红色,32=绿色,33=黄色,34=蓝色,35=洋红,36=青色,37=白色

背景颜色包括:0=重置,40=黑色,41=红色,42=绿色,43=黄色,44=蓝色,45=洋红,46=青色,47=白色

echo-e"\e[1;32mhelloword\e[0m"

\e[1;32m:将字体颜色设为绿色,\e[0m:将颜色重置

;

shell中的print和printf的区别

因为不知道你使用的是bash还是tcsh,还是其他种类的shell。假设是bash, 下面举例子讲解,有可能你的机器上的同样的命令输出与我的不同,供参考。

1)运行下面2条which命令:

$ which print

/usr/bin/print

$ which printf

/usr/bin/printf

说明当前机器上安装了外部命令print和printf

2)看一下这2个命令的具体的位置:

$ ls -l /usr/bin/print /usr/bin/printf

lrwxrwxrwx 1 root root 11 Nov 15 2010 /usr/bin/print - run-mailcap

-rwxr-xr-x 1 root root 51744 Apr 1 2012 /usr/bin/printf

说明print是符号链接,看看它指向的可执行文件:

$ ls -l /usr/bin/run-mailcap

-rwxr-xr-x 1 root root 17012 Nov 15 2010 /usr/bin/run-mailcap

3)运行print --help或者man print可以查看它的帮助

运行man printf可以查看帮助,或者运行/usr/bin/printf --help查看帮助

为什么运行printf --help不能查看帮助呢?

4)在bash环境下面,运行help可以看见所有的内置命令,可以看见内置命令包括printf,命令同名时,内置命令的优先级高于外部命令,并且内置命令用help printf来查看帮助。

综上所述,查看内置printf命令的帮助用help printf,查看外部printf命令的帮助要带上全路径,运行/usr/bin/printf --help查看帮助(不带全路径会被认为是内置printf命令)。

5)我个人经验,普通的打印用echo命令,格式化打印用printf命令(内置的,外部的都可以)

PHP中为什么echo是void类型 print是int类型呢

这篇文章主要介绍了PHP中echo和print的区别,针对二者使用中常见的用法区别进行了较为深入的总结与分析,需要的朋友可以参考下

一般来说,PHP中动态输出HTML内容,是通过print 和 echo 语句来实现的,在实际使用中, print 和 echo 两者的功能几乎是完全一样。可以这么说,凡是有一个可以使用的地方,另一个也可以使用。但是,两者之间也还是一个非常重要的区别:在 echo 函数中,可以同时输出多个字符串,而在 print 函数中则只可以同时输出一个字符串。同时,echo函数并不需要圆括号,所以echo函数更像是语句而不像是函数。

echo 和 print 都不是函数,而是语言结构,所以圆括号都不是必需的。

他们的区别在于:

(1) echo可以输出多个字符串,像下面这样:

echo 'a','b','c';

如果你非要加上圆括号,注意写成echo ('a','b','c');是错误的,应该写成:

echo ('a'),('b'),('c');

它没有像函数的行为,所以不能用于函数的上下文

(2) print只能输出一个字符串,它可以表现得像一个函数,比如你可以如下使用:

$ret = print 'Hello World';

所有它能用在更复杂的表达式中。

另外,echo的效率相对比较快!

看看如下代码:

?php

$a='hello ';$b='php world!';echo $a,$b.'br /';//echo 可以用逗号分隔字符串变量来显示

print $a.$b.'br /';//而print不能使用逗号,只能用点号分隔,

//print $a,$b.'br /';//这里使用逗号时报错。

?

分析总结:

echo 命令和print命令相同,没有区别

echo 函数和print函数有区别。

echo() 无返回值,与echo命令相同

print() 有返回值,成功,返1,false,返0.

printf() 和sprintf()类似,均为格式化输出,不同的是前者输出到标准输出,后者输出到变量

形如:

echo EOT

EOT;

print EOT

EOT;

的书写格式,其含义如下:

运算符,将由自定义分界符间的内容视为字符串,可对其间的变量做处理

EOT 自定义分界符,结束时必须位于行首

相信本文所述对大家更好的掌握PHP程序设计有一定的借鉴价值。

PHP中echo(),print(),print_r()的区别是什么?

四种方法可以输出字符串。 echo

print()

printf()

print_r()

echo

可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

语法正确: echo "Hello", "World";

语法错误: echo ("Hello", "World");

print()

函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。如, if (!print("Hello, World")){

die("you are not listening to me");

}

printf()

printf()源于C语言中的printf()。该函数输出格式化的字符串。

语法: printf(format,arg1,arg2,arg++)

format 规定字符串以及如何格式化其中的变量;

arg1, arg2, ++ 等参数将插入到主字符串中的百分号 (%) 符号处。该函数是逐步执行的。在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

Example: ?php

$str = "Hello";

$number = 123;

printf("%s world. Day number %u",$str,$number);

?

#Results======

Hello world. Day number 123

如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入 % 符号之后,由数字和 "\$" 组成。请参见例子 3。

Example: ?php

$number = 123;

printf("With 2 decimals: %1\$.2fbr /With no decimals: %1\$u",$number);

?

#Result

With 2 decimals: 123.00

With no decimals: 123

print_r()和var_dump()

print_r()可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。如, $a = array('name' = 'Fred', 'age' = '15', 'wife' = 'Wilma');

print_r($a);

Output: Array

{

[name] = Fred

[age] = 15

[wife] = Wilma

}

对象也一样。如, class P {

var $name = 'nat';

// ...

}

$p = new P;

print_r($p);

Output: Object

{

[name] = nat

}

但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。

有点乱,建议你整理一下,写到网页编辑器里,好好分析一下,祝你好运啊!

一年好运随春到 四季彩云滚滚来 万事如意

(责任编辑:IT教学网)

更多

推荐CMS技巧文章