小编Pad*_*dau的帖子

是否有命令可以在没有重定向、管道或函数的情况下将文本写入文件?

管道和重定向是 Linux 中两个最强大的功能,我喜欢它们。

但是,我遇到了一种情况,我需要在不使用管道、重定向或函数的情况下将一段固定的文本写入文件。

我正在使用 Bash 以防万一。

第一:为什么?

如果有更简单的解决方案,我会解释原因。

我有一个带有一些菜单条目的后台 yad 通知。在某些菜单项中,我希望通知将一段固定的文本写入文件。这是我的意思的一个例子。

yad --notification --command=quit --menu='Example!echo sample >text.txt'
Run Code Online (Sandbox Code Playgroud)

问题是 yad 不接受重定向,所以它从字面上打印字符串sample >text.txt而不是重定向。

同样,管道符号 ( |) 是 yad 中的分隔符;但是如果你改变它,yad 会把它当作一个文字字符。例如:

yad --notification --command=quit --separator='#' --menu='Example!echo sample | tee text.txt'
Run Code Online (Sandbox Code Playgroud)

这从字面上打印字符串sample | tee text.txt而不是管道。

编写一个供 yad 调用的函数也没有意义,因为 yad 运行在它自己的空间中并且无法识别该函数。

因此我的问题

因此,我想要一个像echo,cat或者printf将输出文件作为参数而不是重定向的命令。我已经搜索过这样的命令,但找不到。

当然,我可以自己编写并将其放在默认路径中:

FILENAME="${1}"
shift
printf '%s\n' "${*}" >"${FILENAME}"
Run Code Online (Sandbox Code Playgroud)

进而

yad --notification --command=quit --menu='Example!myscript text.txt sample'
Run Code Online (Sandbox Code Playgroud)

但是,如果 Linux 还没有这样的东西,我确实会感到惊讶!

谢谢

shell-script quoting yad

16
推荐指数
2
解决办法
1974
查看次数

标签 统计

quoting ×1

shell-script ×1

yad ×1