Просто проверьте, существует ли файл, и если нет, :повторите заголовок:
if [ ! -f "/home/result_$CURR_TIME_EPOCH.csv" ]; then
echo "collectiontime,hostname,diskusage,directory" > "/home/result_$CURR_TIME_EPOCH.csv"
fi
Это, вероятно, должно быть 'b.txt'$'\n'
в последнем, с последней одинарной кавычкой.
Это похоже на вывод GNU ls со стилем цитирования shell-escape
. В последних версиях GNU ls такие кавычки используются по умолчанию. Вы можете убедиться, что это так, запустив ls -l --quoting-style=shell-escape
, чтобы увидеть, дает ли это тот же результат. Как следует из названия, выходные данные заключаются в кавычки, как это делает оболочка, поэтому их можно использовать в качестве входных данных для оболочки. Следовательно, должна быть возможность удалить один или оба файла, просто скопировав вывод в кавычках/экранированном виде из ls
в Bash :
ls -l ''$'\n' 'b.txt'$'\n
и, конечно же, rm...
после того, как вы убедитесь, что получили правильные файлы.
Для чего бы это ни стоило, первое имя файла — это просто одинокая новая строка (, по какой-то причине экранирование добавляет начальный пустой ''
), второе — b.txt
и новую строку в конце.
Введите «rm имя файла, отображаемое ls », чтобы удалить файлы, например.
rm ''$'\n'
Фон:
''$'\n'
, они даже состоят только из одного символа новой строки)ls -N
, чтобы получить другой (традиционный )вид $'\n'
, который представляет символ новой строки, см. "ANSI -C Quoting"(http://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html)man 1 ls
)-ищите «цитирование» ''$'\n'
ls
добавлением двух одинарных кавычек -возможно, это ошибка