ターミナルシェルには次のライナーがあります。
while true; do echo foo | nc -l 3000 done;
ポート3000で引き続きリッスンしたいです。しかし、構文的にbashが機能するには改行文字が必要なようですか?
while true; do
echo foo | nc -l 3000
done;
一行にする方法はありますか?ここで何が起こっているのでしょうか?
答え1
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;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~