shell 对于符号的要求好严格啊,有没有智能的 IDE 啊

2022-12-04 19:28:48 +08:00
 Aurora0
8295 次点击
所在节点    Linux
78 条回复
44670
2022-12-04 21:31:57 +08:00
可以将两个 if 语句结合成一个,使用 && 连接来实现,如下:


if [ -z "$pid" ];then
echo "不存在占用 8080 端口的进程";
else
kill -9 $pid;
echo "已开始强制 kill 掉 pid 为:$pid 的进程";
currentpid=$(ps -ef|grep develop|grep 8080| awk '{print $2}')
if [ -z "$currentpid" ];then
nohup java -jar develop.jar --server.port=8080 &
tail -f nohup.out
else
echo "未能强制 kill 掉占用 8080 端口的进程";
fi
fi
kouhe3
2022-12-04 21:35:50 +08:00
果然还是嘴臭的喷子 AI 比较容易通过图灵测试
Aurora0
2022-12-04 21:40:52 +08:00
@44670 #21
我换行没错吧。这样的话,和我的逻辑不一样了
44670
2022-12-04 21:45:48 +08:00
@Aurora0 之前的代码中,两个 if 语句是并行执行的,而修改后的代码中,第二个 if 语句只有在第一个 if 语句的条件为真的情况下才会执行。这样就可以避免在没有 kill 掉占用 8080 端口的进程的情况下,就直接部署新的代码的问题。
Aurora0
2022-12-04 21:49:43 +08:00
@44670 #24 ERROR: transport error 202: bind failed: 地址已在使用
好像不行啊
Aurora0
2022-12-04 21:51:46 +08:00
@44670 #24 你的逻辑是通的,我理解了,但是实际部署还是报刚才的错误
44670
2022-12-04 21:51:48 +08:00
@Aurora0 这个问题可能是因为 kill 掉进程后,端口还没有释放,导致新的进程无法绑定到该端口。你可以尝试在 kill 掉进程后,等待一段时间再执行部署新代码的操作,这样可以让端口有足够的时间释放。

例如,可以在 kill 掉进程后增加一条 sleep 命令,等待 1 秒钟,再执行部署新代码的操作,如下:

if [ -z "$pid" ];then
echo "不存在占用 8080 端口的进程";
else
kill -9 $pid;
echo "已开始强制 kill 掉 pid 为:$pid 的进程";
sleep 1
currentpid=$(ps -ef|grep develop|grep 8080| awk '{print $2}')
if [ -z "$currentpid" ];then
nohup java -jar develop.jar --server.port=8080 &
tail -f nohup.out
else
echo "未能强制 kill 掉占用 8080 端口的进程";
fi
fi
当然,如果你觉得 1 秒钟时间太短,也可以调整为更长的时间。
Aurora0
2022-12-04 21:55:22 +08:00
@44670 #27 不排除这个可能,我试试
Aurora0
2022-12-04 21:58:12 +08:00
@44670 #27 问题解决了,十分感谢
44670
2022-12-04 21:59:52 +08:00
@Aurora0 我很高兴能够帮到您。如果您有其他问题,欢迎继续咨询。
Aurora0
2022-12-04 22:01:49 +08:00
@44670 #30 😂 ,AI 上瘾了
clrss
2022-12-04 22:23:40 +08:00
明白原理更好写。
比如[ -z "$pid" ]
[ 其实是个程序,后面三个是参数,所以空格少不了。
ciaoly
2022-12-04 22:27:19 +08:00
这时候就不得不提 PowerShell 的好了😸
Aloento
2022-12-04 22:30:52 +08:00
@ciaoly 那确实

这 AI 也是真离谱
fzls
2022-12-04 22:36:32 +08:00
这 ai 好强啊,今天在好多帖子里见到了
Danswerme
2022-12-04 22:43:18 +08:00
下次找个建政或者互喷的帖子试试这个 AI
blankmiss
2022-12-04 22:50:43 +08:00
不知道是装机器人还是真 AI
dcsuibian
2022-12-04 22:54:14 +08:00
感觉应该说是不严格,就跟写 html 、css 、js 一样。
宽松的处理机制会导致新手不明白为啥某段代码能用或不能用。

如果语法简洁清晰,写法固定,强制报错,我感觉其实对编写者来说是更友好的。
vision1900
2022-12-04 22:54:54 +08:00
eason1874
2022-12-04 23:05:15 +08:00
@yanqiyu #10 能一眼看出来是因为 AI 按书面语法生成的句子过于彬彬有礼,虽然语法是对的,但日常中没人这样说话

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/900033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX