为了使我的代码可移植,我尝试使用printf
而不是echo
.但是之后
printf "-dogs-cats"
Run Code Online (Sandbox Code Playgroud)
返回错误.本案的解决方法是:
printf "-";printf "dogs-cats"
Run Code Online (Sandbox Code Playgroud)
但是有一个通用的,可移植的命令(或一个选项printf
),它将打印任意字符串作为文字/逐字,而不是尝试将字符串解释为格式?
我在BSD UNIX(在Mac上)工作,但我的目标是在其他UNIX风格中也可以使用的代码.
几种unix实用程序,例如fmt,head和cat,可以通过以下三种方式中的任何一种来接收数据:来自标准输入的管道;或重定向“ <”。例如:
printf '%b' 'dog \ncat \nrat\n' > dogcatrat
fmt dogcatrat
cat dogcatrat | fmt
fmt < dogcatrat
Run Code Online (Sandbox Code Playgroud)
可以编写一种功能相同的perl脚本吗?还是有充分的理由不尝试这样做?“标准输入的管道”是引用以cat开头的代码行的正确方法吗?
我想编写myfmt.pl,以这三种方式中的任何一种使用。