2

Я делаю сценарий и хотел бы записать его в другой файл, если он существует?

traceroute google.com > trace.log

Любая помощь будет оценена.
Кроме того, я новичок, поэтому пример будет полезным.
Спасибо.

1 ответ1

1

Вот один из подходов:

#!/bin/sh
n=
while true
do
    fname="trace$n.log"
    [ -f "$fname" ] || break
    n=$(($n+1))
done
traceroute google.com >"$fname"

Вышеперечисленное проходит по очереди каждое потенциальное имя: trace.log , trace1.log , trace2.log и т.д. При первом обнаружении несуществующего имени он выходит из цикла и запускает команду traceroute .

Предостережение: этот сценарий не пытается обрабатывать условия гонки. В частности, существует момент времени после того, как скрипт проверяет наличие файла, но до того, как этот скрипт открывает этот файл для записи. В этот момент другая запущенная программа может попытаться создать файл. В том маловероятном случае, если это вас беспокоит, потребуется более сложный подход.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .