echo和printf的区别,printf叫什么
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()函数更适合调试。
有点乱,建议你整理一下,写到网页编辑器里,好好分析一下,祝你好运啊!
一年好运随春到 四季彩云滚滚来 万事如意