Linux学习笔记-shell介绍

1、Shell环境

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

Linux 的 Shell 种类众多,常见的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)
  • ......

这里我使用的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh ,它同样也可以改为 #!/bin/bash

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

2、脚本执行

作为可执行程序,执行脚本命令示例:./test.sh

注意:一定要写成 ./test.sh,而不是 test.sh,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

作为解释器参数运行,执行脚本命令示例:/bin/sh test.sh

3、Shell参数传递

使用n获取脚本被传入的参数。注意0代表文件名,其他的就是1、2以此类推。使用示例如下:

结果:

还有一些特殊字符用来处理参数

|------|-----------------------------------|
| 参数处理 | 说明 |
| # | 传入的参数个数 | | * | 拼成单个字符串输出所有参数,如果有双引号",会把双引号一起输出 |
| $$ | 脚本运行的当前进程ID号 |
| ! | 用户自己启动的最后一个后台进程的进程ID号,后台自带的看不见 | | @ | 与\*的功能类似,区别在于如果有"会把所有参数逐个输出,不再拼接 | | - | 显示shell当前打开的所有选项 |
| $? | 表示上一条命令的执行结果,为0执行成功,非0表示执行出错 |

示例(这里主要测试\*和@的区别)

代码如下:

结果如下:

4、Sell注释

单行注释:#即可

多行注释(暂时只记一种):

:<<EOF

注释内容...

注释内容...

注释内容...

EOF

这个EOF可以被任意其他字符串替代(哪怕直接写注释二字都行)

相关推荐
lengjingzju3 小时前
编译与调试完全指南—第10章 网络分析工具
linux
星野川崎2064 小时前
电商多店运维:云机24小时挂机频繁掉线、账号无故风控深度原因分析及解决方案
大数据·运维·服务器·云计算·电商
ltl4 小时前
新硬件对存储的影响:ZNS、CXL 与计算存储
linux
RisunJan4 小时前
Linux命令-xauth(X11 认证授权管理)
linux·服务器·microsoft
熊IT6 小时前
什么是原生住宅 IP?如何判断一个 IP 是否真正“原生”?
服务器·网络·tcp/ip
不灭的程序员阿澄6 小时前
在飞牛 NAS 上用 Docker 运行 DeepSeek Harness
运维·docker·容器
Elastic 中国社区官方博客6 小时前
让大模型思考,让小模型执行:在 Elastic Workflows 中拆分 LLM 成本
大数据·运维·数据库·人工智能·elasticsearch·ai
艾伦_耶格宇7 小时前
【AI】-4 OpenCode Go 接入 Obsidian 完整指南
运维·开发语言·人工智能·agent·opencode
SXkehuirongsheng7 小时前
APP开发定制和模板开发哪个更实用?
大数据·运维·人工智能
fb_123458 小时前
Linux三剑客超全精讲(grep+sed+awk)零基础入门|正则+实战面试题
linux·运维·服务器