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可以被任意其他字符串替代(哪怕直接写注释二字都行)

相关推荐
Leon-Ning Liu3 分钟前
【真实经验分享】ORA-12516 排查实录:共享服务器模式下 SHARED_SERVER_SESSIONS 不足引发的监听故障
运维·服务器·oracle
2401_827501284 分钟前
Linux系统移植
linux·arm开发·单片机
东方护航数据恢复(深圳)11 分钟前
服务器硬盘黄灯/红灯故障排查与处理命令全指南_东方护航数据恢复深圳店
运维·服务器·chrome
爱码少年12 分钟前
SSH密钥登录完整流程与原理详解
运维·ssh
uncle_ll32 分钟前
服务器选型、微调范式、训练优化与环境搭建
服务器·python·gpt·llm·nlp
2601_9657984740 分钟前
Build a Consulting Site in 2026: Nifty Theme Practical Review
java·linux·数据库
加油码1 小时前
共享内存详解:原理、系统调用与高性能进程间通信
linux·c语言·c++
枳实-叶1 小时前
Linux 环境下段错误出现的原因及调试方法
linux·运维·服务器
花生了什么事o1 小时前
Docker 部署 SpringBoot:从镜像构建到服务器运行
服务器·spring boot·docker
Chief_fly1 小时前
ARM 麒麟系统服务器构建docker镜像
运维·服务器·docker