Объединение файлов скрипта Linux bash

#linux #bash

#linux #bash

Вопрос:

Привет, в моем скрипте я объединил два файла в новый файл под названием output.txt . У меня возникли проблемы с проверкой этого output.txt существует файл для последующей печати сообщения «конкатенация прошла успешно». Объединение, похоже, работает и создает новый файл.

 cat $file1 $file2 >> output.txt     

file3="$output.txt"                #incorrect?

if [ -e $file3 ]                             
then
    echo "concatenation of files successful"
fi
  

Комментарии:

1. Удалите знак доллара: file3="output.txt" . $output заменяется переменной с именем output (которая не существует в опубликованном здесь фрагменте). Если вы переместите переменную file3 выше cat , вы также можете использовать ее для перенаправления выходных данных, чтобы избежать двойного повторения имени файла.

Ответ №1:

Должно быть:

 file3="output.txt"
cat $file1 $file2 >> $file3

if [ -f $file3 ]; then
    echo "concatenation of files successful"
fi
  

Комментарии:

1. Это -f не устраняет проблему. На самом деле -e тоже работает просто отлично.

2. Просто исправил это — теперь все должно быть в порядке

3. Я изменил на upvote, потому что @cfillion добавил свой ответ только в качестве комментария. Итак, даже если это отредактировано, теперь это правильный ответ. @phebus — обратите внимание, что в сценарии оболочки вам не нужно иметь ; after if и before then

4. Теперь он пытается выполнить команду с именем file3 . Вокруг знака равенства не должно быть пробелов.

Ответ №2:

 file3="output.txt"
cat $file1 $file2 >> $file3

if [ $? == 0 ]; then
    echo "concatenation of files successful"
fi
  

Проверка существования файла не означает, что файлы были успешно объединены. Это означает, что файл существует.

Учтите, что:

 cat $file1 $file2(missing) >> $file3
cat $file1(missing) $file2 >> $file3
  

заставило бы $file3 существовать.

Проверка значения завершения последней операции с помощью $? учетных записей для успешной работы всей операции.

Кроме того, если вы специально не хотите добавлять >> к существующему файлу, вы ВСЕГДА будете добавлять. Таким образом, ваш файл всегда будет существовать после первой операции.

Ответ №3:

В одной строке

 
cat $file1 $file2 >> output.txt amp;amp; echo 'Success' || echo 'Failed'