您现在的位置:首页 > 系统运维 > Linux运维

记一次Linux创建文件使用特殊字符的坑

问题: 因归档需要所以在shell脚本中cp命令与时间变量配合使用,具体配置如下: #变量配置 hostname_exetime=''$(hostname)'_'$(date %Y-%m-%d_%H:%M:%S)'' #复制配置 cp *.tar.gz Analysislog/'$hostname_exetime'.tar.gz && cp *.md5 Analysislog/'

问题:

因归档需要所以在shell脚本中cp命令与时间变量配合使用,具体配置如下:

#变量配置
hostname_exetime=""$(hostname)"_"$(date  %Y-%m-%d_%H:%M:%S)""
#复制配置
cp *.tar.gz Analysislog/"$hostname_exetime".tar.gz && cp *.md5 Analysislog/"$hostname_exetime".md5

但是在执行脚本中发现命令无法执行,报错如下:

cp: cannot create regular file: Invalid argument

出现该问题后排查了很长时间,最后文件系统的问题也在排查,偶然发现了这个问题,是因为操作系统在处理“:”,他会这样显示,导致系统无法正常处理。具体可以看下图。

解决办法:

命令的时候避免使用特殊字符,建议使用的字符包括:字母、数字、"."(点)、"_"(下划线)和"-"(连字符)。

变量我们可以替换为:

hostname_exetime=""$(hostname)"_"$(date  %Y-%m-%d_%H_%M_%S)""
或
hostname_exetime=""$(hostname)"_"$(date  %Y-%m-%d_%H%M%S)""

版权所有
侵权必究

上一篇
tar 压缩不带绝对路径压缩方法
下一篇
centos7 关闭防火墙和selinux