编辑文件直到所选端口不会被其他应用程序使用
Edit file until the selected port will be not used by another application
我写了一个简单的脚本,要求用户编辑文件,直到用户进入未使用的端口为止。但它不起作用(
while ! nc -z localhost $port; do
echo port is already used. Please choose another one.; read -p "Press enter to edit configuration file"; nano config.env;
done
$port 是脚本从当前配置文件中获取的环境。
while 循环根本没有开始。
我已经尝试 运行 脚本了!没有!结果是一样的,看起来条件表达式有问题。
为了测试您的场景,我在笔记本电脑上启动了 Apache httpd 服务器。它侦听端口 80。因此 nc -z localhost 80
将以状态码 0 退出。
这是我的脚本:
#!/bin/bash
port=80
while nc -z localhost $port
do
echo "Port is already used. Please choose another one."
read -p "Press enter to edit configuration file or CTRL-C to terminate."
/usr/bin/nano config.env
wait
echo ""
done
- 为了简化,我在脚本中将端口静态设置为 80。您的版本将从 config.env
读取端口
- 当用户按下回车键时,
read
完成,并调用编辑器。
- 当用户编辑文件时,您希望脚本
wait
。所以在编辑器关闭之前,脚本什么都不做。无论如何都没有必要再次检查端口。
- 当编辑器关闭时,等待完成,另一个循环开始。
- 我添加了“或 CTRL-C 来终止”来让用户跳出循环和脚本。
- 为了便于阅读,您应该将命令放在不同的行中。单行上的一长串命令,由
;
分隔可能会造成混淆,而且毫无用处。马车returns不贵:)
我写了一个简单的脚本,要求用户编辑文件,直到用户进入未使用的端口为止。但它不起作用(
while ! nc -z localhost $port; do
echo port is already used. Please choose another one.; read -p "Press enter to edit configuration file"; nano config.env;
done
$port 是脚本从当前配置文件中获取的环境。 while 循环根本没有开始。 我已经尝试 运行 脚本了!没有!结果是一样的,看起来条件表达式有问题。
为了测试您的场景,我在笔记本电脑上启动了 Apache httpd 服务器。它侦听端口 80。因此 nc -z localhost 80
将以状态码 0 退出。
这是我的脚本:
#!/bin/bash
port=80
while nc -z localhost $port
do
echo "Port is already used. Please choose another one."
read -p "Press enter to edit configuration file or CTRL-C to terminate."
/usr/bin/nano config.env
wait
echo ""
done
- 为了简化,我在脚本中将端口静态设置为 80。您的版本将从 config.env 读取端口
- 当用户按下回车键时,
read
完成,并调用编辑器。 - 当用户编辑文件时,您希望脚本
wait
。所以在编辑器关闭之前,脚本什么都不做。无论如何都没有必要再次检查端口。 - 当编辑器关闭时,等待完成,另一个循环开始。
- 我添加了“或 CTRL-C 来终止”来让用户跳出循环和脚本。
- 为了便于阅读,您应该将命令放在不同的行中。单行上的一长串命令,由
;
分隔可能会造成混淆,而且毫无用处。马车returns不贵:)