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