Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 未能打开一个txt文件_Linux_Bash_Shell - Fatal编程技术网

Linux 未能打开一个txt文件

Linux 未能打开一个txt文件,linux,bash,shell,Linux,Bash,Shell,我有一个脚本,它将二进制文件的输出捕获到.txt文件中,然后读取文本文件并向我发送电子邮件: while : do # Start tunneling #url=$(lt --port 8080 &) lt --port 8080 > url_info.txt & url=$(cat url_info.txt) # Send Email ./send.sh "$url" & wait done 经过一段时间的调试,似乎url=$(cat

我有一个脚本,它将二进制文件的输出捕获到.txt文件中,然后读取文本文件并向我发送电子邮件:

while :
do
# Start tunneling
#url=$(lt --port 8080 &) 
lt --port 8080 > url_info.txt &

url=$(cat url_info.txt)

# Send Email
./send.sh "$url" &

wait
done
经过一段时间的调试,似乎
url=$(cat url\u info.txt)
的行不起作用

lt--8080端口将保持运行,直到遇到错误,然后再次运行并发送另一封电子邮件


不确定如何使其工作。

这是一个竞赛条件
lt
开始写入文件,
cat
同时开始读取文件

  • 如果
    lt
    首先设法将某些内容写入文件,则
    cat
    将读取该文件

  • 如果
    cat
    更快,则它将读取上一个文件或空文件,具体取决于
    lt
    的读取距离

最简单的方法是在它们之间添加一个
sleep 10
,从而在编写URL时给
lt
一个良好的开端


更可靠的解决方案是从
lt
读取输出,直到获得所需的信息,但这需要知道命令的预期输出格式。

您的命令在尝试读取之前没有时间创建文件。作为一个调试辅助工具或kludge,您可以在两个操作之间添加
sleep 10
,给它一些时间来创建文件并编写URL,因为它实际起作用了@你能回答这个问题吗?这样我就可以选择你作为正确答案了?