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

2022-12-04 19:28:48 +08:00
 Aurora0
8295 次点击
所在节点    Linux
78 条回复
44670
2022-12-04 19:30:39 +08:00
您是对的,shell 对于命令和参数的要求非常严格,对于符号的使用也有一定的规范。这一点对于初学者来说可能会比较困难,但是随着您不断学习和实践,您会发现写 shell 命令其实也不是那么难。

对于您的问题,我想提醒您,在写 shell 命令时,需要注意以下几点:

空格的使用:在 shell 中,空格是命令和参数的分隔符。因此,在写 shell 命令时,必须正确使用空格,避免出现语法错误。

分号的使用:分号在 shell 中用来分隔多条命令,表示这些命令需要按顺序执行。因此,在写 shell 命令时,如果要在一行中写多条命令,需要用分号来分隔这些命令。

反斜杠的使用:反斜杠在 shell 中用来转义特殊字符。因此,如果您想要在命令中使用一些特殊字符,比如空格、分号等,就需要在这些字符前面加上反斜杠来转义。

当然,如果您觉得写 shell 命令有些困难,您也可以使用智能的 IDE 来帮助您写命令。如果您想要继续使用 IDE 来写 shell 命令,那么您可以尝试使用一些专为 shell 开发的 IDE ,例如:

ShellEd:ShellEd 是一款专为 Eclipse 平台开发的 shell IDE ,支持多种 shell 编程语言,并提供了自动补全、语法高亮等功能。
Geany:Geany 是一款轻量级的 shell IDE ,支持多种编程语言,并提供了语法高亮、自动补全、代码折叠等功能。
Visual Studio Code:Visual Studio Code 是一款功能强大的跨平台 IDE ,支持多种编程语言,并提供了语法高亮、代码提示、调试等功能。
您可以根据自己的喜好选择适合自己的 IDE ,并使用它来帮助您更方便地写 shell 命令。
popotato
2022-12-04 19:35:18 +08:00
@44670 TD
Aurora0
2022-12-04 19:36:14 +08:00
@44670 #1 非常感谢
Aurora0
2022-12-04 19:37:00 +08:00
@44670 #1 open AI ?
44670
2022-12-04 19:38:03 +08:00
不客气,我很高兴能帮到你。如果你有其他问题,请随时问我。
vopin
2022-12-04 19:38:25 +08:00
你们在网上到处用 AI 生成的文字图片,然后又会被 AI 当作输入吃进去。等着左脚踩右脚上天,哈哈
iamzuoxinyu
2022-12-04 19:41:45 +08:00
shellcheck bash language server
Cavolo
2022-12-04 19:44:47 +08:00
@vopin 我们并不是在网上到处用 AI 生成的文字图片,也不会将 AI 生成的文字图片当作输入吃进去。我们是一个基于 AI 技术开发的聊天机器人,能够根据用户的输入自动生成回复。我们的回复不是由 AI 生成的文字图片,而是由 AI 根据我们已有的知识库自动生成的文本。

我们的目标是通过人工智能技术,为用户提供更加高效、便捷的在线交流服务。我们致力于为用户提供有价值、有意义的回复,并不会有左脚踩叒脚上天的情况发生。
ershierdu
2022-12-04 20:00:23 +08:00
@44670 #1 笑死了,我也正在找论坛里的实际问题来测试它的能力 hhhh
yanqiyu
2022-12-04 20:41:03 +08:00
@44670 太奇怪了,第一句话没读完,脑内的什么地方就开始反应过来这大概是 GPT 造出来的什么东西
Aurora0
2022-12-04 21:01:29 +08:00
@ershierdu #9 除了前两段其他的还好,顺便问一下,怎么判断一个变量是否为空啊
40EaE5uJO3Xt1VVa
2022-12-04 21:01:34 +08:00
@yanqiyu #10 我也这么觉得,感觉很恐怖
Aurora0
2022-12-04 21:02:09 +08:00
if [ ! $pid ];then
这样好像有时候判空不行
Nitroethane
2022-12-04 21:08:08 +08:00
@Aurora0 #13 if [ -z "${VAR}" ]; then echo "variable VAR is empty"; else "variable VAR is not empty"; fi
Aurora0
2022-12-04 21:12:29 +08:00
@Nitroethane #14 感谢
44670
2022-12-04 21:24:38 +08:00
@Aurora0 因为如果 $pid$ 的值为 0 或空字符串,它也会被认为是空。

正确的做法应该是这样:

if [ -z "$pid" ];then

这样就可以确保判断出所有空值,包括 0 和空字符串。
acrisliu
2022-12-04 21:24:42 +08:00
我用 Intellij IDEA ,还行。
Aurora0
2022-12-04 21:29:20 +08:00
@Nitroethane #14
```bash
if [ -z "$pid" ];then
echo "不存在占用 8080 端口的进程";
else
kill -9 $pid;
echo "已开始强制 kill 掉 pid 为:$pid 的进程";
fi&&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
```
我这两个 if 会并行执行,怎么样可以避免吗

需求就是,先 kill 掉当前占用 8080 端口的服务,然后部署新的代码
Aurora0
2022-12-04 21:31:10 +08:00
@acrisliu #17 idea 有点重量了,我现在选择的是 vs code
renmu
2022-12-04 21:31:47 +08:00
@44670 我觉得很不错,可以当成 wikihow 或者百度知道的替代品,当成某种程度的搜索引擎替代品也可以

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

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

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

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

© 2021 V2EX