Я делаю сценарий и хотел бы записать его в другой файл, если он существует?
traceroute google.com > trace.log
Любая помощь будет оценена.
Кроме того, я новичок, поэтому пример будет полезным.
Спасибо.
Вот один из подходов:
#!/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
.
Предостережение: этот сценарий не пытается обрабатывать условия гонки. В частности, существует момент времени после того, как скрипт проверяет наличие файла, но до того, как этот скрипт открывает этот файл для записи. В этот момент другая запущенная программа может попытаться создать файл. В том маловероятном случае, если это вас беспокоит, потребуется более сложный подход.