我在终端外壳中有这样一个衬垫:
while true; do echo foo | nc -l 3000 done;
我只想继续监听端口 3000。但从语法上看,bash 工作似乎需要换行符?
while true; do
echo foo | nc -l 3000
done;
有没有办法在一行上做到这一点?这里发生了什么事?
答案1
阅读 shell(例如bash
)手册页以了解命令的语法!这个“问题”与 无关netcat
。
循环的常用语法while
是
while sleep 1
do
echo "I want to read 'man bash'"
done
但你可以把它写成while sleep 1; do echo "I want to read 'man bash'"; done
.
或者正如手册所说:while list-1; do list-2; done
答案2
答案是一个分号:
while true; do echo foo | nc -l 3000; done;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~