echo:编程界的“反噬者”
echo的名字意思是“回声”,动词意词是“回响”,就是产生回声。
echo本来是在Unix或Linux的shell命令行中使用的命令,但在Windows的cmd命令行窗口也是支持的,只不过使用方式有些不同。
一、基础版
echo "Hello, World!"
这个命令的功能想必大家都能猜到,就像我们学的第一个C语言程序一样,打印出一串字符。
同样是打印为什么叫echo而不叫print或printf呢,因为它想向你展示的是这样的情景:
你双手合拢在嘴巴前,大喊一声“Hello, World!”。
人们各忙各的,没人理你……
片刻后,大山那边传来一声“Hello, World!”。
还是山里人厚道啊!
这里要注意一点,上面的语法适用于Linux,如果在Windows下打印不用引号:
echo Hello, World!
二、变量传递
echo不仅仅能输出固定的文字,它还能输出变量的值。比如Linux下:
name="World"
echo "Hello, $name!"
无论你丢过去什么name,它都回原封不动的返还给你,像不像一门失传的武功:斗转星移?
在Widows下有点儿繁琐,需要改成下面的形式:
set name=World
echo Hello, %name%!
看到没,Windows下给变量赋值得在变量前加个set,然后使用时得用两个%像肉夹馍一样夹住变量名。
在Windows下还可以直接用下面的命令输出用户名、当前日期和时间:
echo %username%
echo %date%
echo %time%
三、变量传递
你以为echo只会回应你的“喊话”?它还能把它们写到文件里去呢!
这分明是另一门武功:乾坤大挪移。
Linux:
echo "Hello, World!" > file.txt
Windows:
echo Hello, World! > file.txt
如果文件已经存在,则会被覆盖;如果文件不存在,则会创建新文件。
如果想在文件末尾追加内容,只需将>改为>>即可。
四、管道传输
echo还能和其他命令联手,通过管道(|)传递数据。比如,你想把一句话转换成大写,再输出,在Linux下可以这样做:
echo "hello, world!" | tr '[:lower:]' '[:upper:]'
这里,echo就像是一个“快递小哥”,把数据打包好,通过管道(就是中间那根柱状管道“|”)送到tr命令那里,让它进行转换。
注:tr是一个字符转换命令,它可以将一种字符集转换为另一种字符集。在这里,'[:lower:]'表示所有的小写字母,'[:upper:]'表示所有的大写字母,因此tr命令将所有小写字母转换成了大写字母。
Windows下没有tr命令,但还是有管道功能的,用的也是“|”这个符号。比如:
echo 20|abc
执行这个命令后,操作系统会自动把20输入到文件名为abc程序。这是我们常用的输入技巧,如果程序运行后需要输入数据,我们手动输入是需要一定时间的,这就会让程序显示的运行时间变长。为了获得正确的程序运行时间,我们就可以采用echo向程序输入数据。
举个最简单的例子:
#include<stdio.h>
#include<time.h>
int main(){
int a;
scanf("%d", &a);
printf("%d\n", a);
//输出程序运行秒数
printf("Time used = %.2f\n", (double)clock() / CLOCKS_PER_SEC);
return 0;
}
如果你输入时磨磨蹭蹭,程序的运行时间就会出现相当大的误差,老金现身说法,把上面程序的运行时间搞到了8秒。
如果你在cmd窗口用echo 9527|abc,这时是操作系统替你输入数据,时间就只有0秒。
注意:要把abc.exe文件放在对应的目录里,如这里就要放到D盘根目录下。
五、特殊字符处理
有时候,你想输出一些特殊字符,比如换行符、制表符,这时候echo也有妙招。比如,输出一个换行符,Linux:
echo -e "Hello,\nWorld!"
这里的-e选项用于启用转义字符。还有一个选项-n 用于禁止在输出结束时添加换行符。这是Linux特有的功能,Windows里是没有的。
原文地址:https://blog.csdn.net/jjmhx/article/details/143835889
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!