命令替换包括上一个echo命令的文本

时间:2020-03-10 11:30:56

标签: echo ksh command-substitution

我有一个脚本,该脚本使用3个echo命令将一些标头信息写入屏幕,然后应该删除先前创建的文件(确实存在)。该文件是6位文本文件,格式为ddmmyy。

#!/usr/bin/ksh
clear
echo "******************"
echo "Program name    Version: " $VERSION_NUM
echo "******************"

#Set the tmp directory
export MY_TMP_DIR="$MYPATH/$USER/tmp_$(date +%y%m%d%H%M%S)"

在将来的脚本中:

rm -rf $MY_TMP_DIR

这些脚本由多个用户运行。它仅在99%的时间内删除temp目录,但在1%的执行中,由于$ MY_TMP_DIR格式错误,因此失败。

记录正在评估的命令后。结果变量的值包括3个echo命令输出。日志文件显示这是正在评估的字符串(带有换行符):

"rm -rf /pathToWorkingAera/User1/tmp_******************
Program name    Version: 3.0.1
************
280220"

这会导致星号混乱(很明显),从而导致所有事物的删除。幸运的是,该系统受访问控制以限制损坏。

临时解决方法是更改​​echo命令中的星号,以使脚本安全地失败,并且rm -rf显然很危险,但这不是错误的根本原因。

有人可以建议如何通过分配“ date”命令输出来拾取回声输出吗?怎么预防呢?我无法解决它,因为我一开始不知道它是怎么发生的。

该问题是偶发性的,不可重复且并非特定于用户。

系统为RHEL7.7 bash。 (如果可能,将尝试根据要求提供更多详细信息。)

0 个答案:

没有答案