我正在编写一个脚本,如果存在的话,我想将其写入另一个文件?
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
警告:此脚本不会尝试处理竞争条件。具体来说,在脚本检查文件是否存在之后但在此脚本打开该文件进行写入之前,会有那么一瞬间。在那一瞬间,另一个正在运行的程序可能会尝试创建该文件。如果您担心这种情况(这种情况不太可能发生),则需要采用更复杂的方法。