有可能有一个内容可变的文件吗?(这可能是不可能的,但值得一问,因为其他人可能知道一个解决方案。例如,文件mydate.txt的内容应该始终是这个bash(它可以是任何脚本语言,使用bash只是为了简单)代码段生成的内容:
#!/bin/bash date
因此,当我尝试查看mydate.txt文件的内容时,它实际上应该显示当前日期。例如
cat mydate.txt
应显示
Fri Dec 23 09:54:05 AM EET 2022
0lvr5msh1#
给出的示例和描述看起来(对我来说)像一个(简单的) Package 函数,用于执行提供的文件...***如果***文件启用了执行权限:
mycat() { for fname in "$@"; do ./"${fname}"; done; }
试驾:
$ mycat mydate.txt Fri Dec 23 11:02:20 CST 2022 $ mycat mydate.txt mydate.txt mydate.txt Fri Dec 23 11:21:07 CST 2022 Fri Dec 23 11:21:07 CST 2022 Fri Dec 23 11:21:07 CST 2022
xzv2uavs2#
正如所建议的,最好的答案是使用FIFO(先进先出)文件,可能如下所示:
#!/bin/bash [ -f "catme.txt" ] && rm catme.txt # cleanup if needed mkfifo catme.txt trap 'rm catme.txt ; exit 1' SIGINT. # try to clean up the nice way while true do date > catme.txt printf "data provided on %s\n" "`date`" done
运行命令并使用control-c退出.然后在另一个终端调用cat catme.txt,你会看到我们的当前日期.这可能不是你想要的,但你必须在unix中附加一个动态的进程,否则你可以尝试从其他脚本运行该命令.
cat catme.txt
2条答案
按热度按时间0lvr5msh1#
给出的示例和描述看起来(对我来说)像一个(简单的) Package 函数,用于执行提供的文件...***如果***文件启用了执行权限:
试驾:
xzv2uavs2#
正如所建议的,最好的答案是使用FIFO(先进先出)文件,可能如下所示:
运行命令并使用control-c退出.然后在另一个终端调用
cat catme.txt
,你会看到我们的当前日期.这可能不是你想要的,但你必须在unix中附加一个动态的进程,否则你可以尝试从其他脚本运行该命令.