Выполнить несколько команд оболочки для одного файла и перенаправить вывод в один файл - PullRequest
1 голос
/ 26 февраля 2020

Это довольно неуклюжий вопрос, так как я знал, как заставить это работать, но не мог понять синтаксис сейчас.

У меня есть сценарий оболочки, который в основном проверяет размер файла и перенаправляет его на временный file

#!/bin/bash
while true
do
    echo "Press CTRL+C to stop the script execution"

echo "*********************" >> /tmp/size.txt
echo "current date is" >> /tmp/size.txt
date >> /tmp/size.txt
echo "size of file r4" >> /tmp/size.txt
du -h /tmp/r4
echo "size of file h5" >> /tmp/size.txt
du -h /var/h5
echo "size of file h6" >> /tmp/size.txt
du -h /opt/h6
echo "size of file h8" >> /tmp/size.txt
du -h /data/h8
echo "*********************" >> /tmp/size.txt
end

Приведенный выше скрипт работает отлично и непрерывно регистрирует все данные. Однако мне нужно слишком много раз писать перенаправление (/tmp/size.txt), чтобы скрипт выглядел неуклюже. Я мог сделать это раньше, но почему-то он не работает, так как синтаксис выглядит неверно.

Могу ли я получить некоторую помощь здесь, чтобы мне не нужно было повторять перенаправление и может быть обработан только в одной строке .

Спасибо

1 Ответ

1 голос
/ 26 февраля 2020

Переместите >> /tmp/size.txt после done и удалите его изнутри:

while true
do
   echo "Press CTRL+C to stop the script execution"

   echo "*********************"
   echo "current date is"
   date >> /tmp/size.txt
   echo "size of file r4"
   du -h /tmp/r4
   echo "size of file h5"
   du -h /var/h5
   echo "size of file h6"
   du -h /opt/h6
   echo "size of file h8"
   du -h /data/h8
   echo "*********************"
done >> /tmp/size.txt
...