我试图使用date命令编写一些没有正确输出的内容。这是我到目前为止的内容:
#!/bin/bash
# Get RPM manifest
# Output written to /tmp
NOW=$(date +%D)
rpm -qa --qf="%{NAME}.%{ARCH}\n" | sort > /tmp/$HOSTNAME.RPM_Manifest.$NOW.txt
当我运行此脚本时,我收到此消息:
[root@linmachine1 ~]# sh /usr/local/bin/rpm_manifest.sh
/usr/local/bin/rpm_manifest.sh: line 7: /tmp/linmachine1.RPM_Manifest.03/01/17.txt: No such file or directory
我怀疑问题在于如何定义NOW变量中的日期格式可能是罪魁祸首。我已尝试使用和不使用引号并获得相同的功能。看看手册页,我没有看到改变默认行为的方法,正斜线将被点替换,因为我相信这就是问题所在。
编辑:感谢您的所有回复。我不确定为什么这会被贬低。我问了一个合理的问题。是什么给了什么?
答案 0 :(得分:1)
是的,你不应该在文件名中包含斜杠。
使用:
now=$(date "+%d.%m.%Y")
rpm -qa --qf="%{NAME}.%{ARCH}\n" | sort > "/tmp/$HOSTNAME.RPM_Manifest.$now.txt"
代替,或用您喜欢的任何内容替换.