技术
成就梦想!

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

问题:

因归档需要所以在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

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

image

解决办法:

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

变量我们可以替换为:

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

image

参考文档:https://unix.stackexchange.com/questions/373284/cp-cannot-create-regular-file-invalid-argument

赞(5)
未经允许不得转载:未来往事 » 记一次Linux创建文件使用特殊字符的坑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址