!<是什么意思?

彼得·伊万年科(Petro Ivanenko)

!<这个bash脚本中的含义是什么,为什么它指向不存在的文件?

bash -c 'while !</dev/tcp/db/5432; do sleep 1; done; npm start'

在此先感谢您的时间!

瓦列里·帕诺夫(Valery Panov)

!是一个否定运算符。例:

while ! false; do
    echo "inside while loop"
    sleep 1
done

因为永远! false是真的,所以它将永远在循环内部

<是另一个运算符。它告诉bash读取指定的文件。如果文件存在并且可读,它将成功(返回零退出代码)。没有左操作数,读取结果将被丢弃。示例:检查是否/tmp/sample_file存在:

if < /tmp/sample_file; then echo 'file exists'; fi

因此,您的代码将sleep 1/dev/tcp/db/5432无法读取的情况下循环运行

现在考虑到这/dev/tcp/是一条特殊的路径,并且访问/dev/tcp/db/5432方式尝试db通过TCP端口5432连接到主机

因此,while循环背后的逻辑是“休眠直到主机db上的postgresql准备就绪”(5432是PostgreSQL的默认端口)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章