技术解析

sh sh04.sh 和 ./sh04.sh 中 echo 的结果不一样
0
2021-07-12 05:24:51
idczone

script 中的 echo 语句是这样的:

echo -e "You SHOULD input 2 numbers, I will cross them!\n"

sh sh04.sh 显然是调用了sh。
如果你需要调用bash,一种是用 ./sh04.sh 这样会检查第一行并调用bash。
又或者运行 bash sh04.sh。

但是 echo 的 -e 参数怎么莫名其妙的变成 string 显示了
而且 -e 显示后,\n 竟然还能换行。

bash 的 echo 和 sh 的 echo 并不相同

该怎么知道哪里不同。
我在里面加上
type echo
man echo | grep '\-e'
之后
sh sh04.sh
得到的结果和当前 bash 的一样。

运行 sh 进去试试不就知道了

参考标准文档 http://pubs.opengroup.org/onlinepubs/000095399/utilities/echo.html
以及以前有人问过的 https://bugs.launchpad.net/ubuntu/+source/dash/+bug/72167

一般echo命令shell都会内置,默认不会调用PATH里面的

sh 的 echo -e 支持是有问题的, 我遇到过

谢谢 日了狗了
/bin/sh 指向 dash 不是 bash ...
么么哒,继续愉快的打代码。




已解决啦
debian 8.0 sid 的 /bin/sh 指向的是 dash 不是 bash

dash要尽可能支持sh本体的规范,所以很多扩展跟bash不太一样的。


好的,先留个印象,以后闲了再研究它。

数据地带为您的网站提供全球顶级IDC资源
请您留言

感谢您的关注,当前客服人员不在线,请填写一下您的信息,我们会尽快和您联系。

提交