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里是没有的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金创想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值