我正在使用m4创建一些基本的宏,我意识到在使用esyscmd
时,在运行命令时会在字符串中添加一个尾随的新行.
例:
define(MY_HOSTNAME, esyscmd(`hostname'))
MY_HOSTNAME
Some other text...
Run Code Online (Sandbox Code Playgroud)
呈现:
> my.host.name
>
> Some other text...
Run Code Online (Sandbox Code Playgroud)
(尾随新行)
通过dnl
在define(或esyscmd)的末尾添加似乎没有任何事情发生,并且仍然有一个尾随的换行符.
esyscmd
在m4中调用时删除尾随换行符的最佳方法是什么?
devnull的示例很好,但是M4也具有内置功能tr
。这是我在做什么:
define(CMD_OUTPUT, esyscmd(`sass --style=compressed foo.sass'))
define(NL,`
')
translit(CMD_OUTPUT, NL)
Run Code Online (Sandbox Code Playgroud)
使用M4更好的人可以将其收紧到单个宏中。
*nix 系统tr
默认有。利用它:
define(MY_HOSTNAME, esyscmd(sh -c "hostname | tr -d '\n'"))
Run Code Online (Sandbox Code Playgroud)
并且您将摆脱尾随的换行符!
归档时间: |
|
查看次数: |
1211 次 |
最近记录: |