时思美 发表于 2025-6-7 09:34:40

shell脚本基本概念和命令小结

如果把shell命令比成盖房子的砖瓦,那shell脚本就是用一块块砖瓦建起来的房子。
脚本的第一行必须写成类似下面这样的形式:
#!/bin/bash    #指定解释器,其他还有dash,Python 等变量

1.变量定义,赋值,引用
变量由字母和数字组成,值由双引号包含,赋值号的两边不能有空格,例:
A=“I like apple”

echo $A#和makefile一样,用$引用,且不能加括号2.变量种类

[*]自定义变量,如上的A
[*]系统预定义变量,如PATH
单独记录下PATH:
PATH 是一个环境变量,它指定了系统查找可执行文件的目录列表。当你在终端中输入命令时,系统会在 PATH 变量中定义的目录中搜索该命令对应的可执行文件,环境变量 PATH 中的不同路径是用冒号 (:) 分隔。
# 将 /opt/myapp/bin 目录添加到 PATH 开头
export PATH=/opt/myapp/bin:$PATH

# 或者,将 /opt/myapp/bin 目录添加到 PATH 末尾
export PATH=$PATH:/opt/myapp/bin

# 仅在 /usr/local/bin 和 /usr/bin 中查找命令
PATH=/usr/local/bin:/usr/bin

# 在脚本中设置 PATH 为你所需要的值
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/custom/path
[*]命令行的变量,$#,$*等。
在 Shell 脚本中,有一些特殊变量用于处理脚本的参数和其他相关信息。以下是一些常见的特殊变量及其含义(所用不多,暂不举例):

[*]$#:传递给脚本或函数的参数个数。
[*]$*:以一个单词显示所有参数(参数被视为一个整体)。
[*]$@:以各自独立的形式显示所有参数(每个参数仍然是独立的)。
[*]$0:脚本或命令本身的名称。
[*]$1、$2、...、$N:传递给脚本或函数的各个参数(第一个参数是 $1,第二个参数是 $2,依此类推)。
[*]$?:上一个命令的退出状态(返回值)。
[*]$$:当前 Shell 进程的进程 ID (PID)。
[*]$!:后台运行的最后一个进程的进程 ID (PID)。
[*]$_:上一个命令的最后一个参数。在交互式 Shell 中,还可以是上一条命令的结果。
特殊符号

双引号,单引号,反引号


[*]双引号 (")
在双引号内,除了 $、``` 和 \ 以外,其他字符都保持字面值。这意味着变量替换和命令替换仍然有效。
name="World"
echo "Hello, $name!"
# 输出: Hello, World!
[*]单引号 (')
单引号内的所有字符都保持字面值,不进行任何特殊处理(例如变量替换或命令替换)。
name="World"
echo 'Hello, $name!'
# 输出: Hello, $name!
[*]**反引号 (`` `)
反引号的作用就是在双引号中标识出命令,即将命令的输出赋值给变量或插入到字符串中。使用 $(...) 是更推荐的写法。
echo "Current date and time: `date`"
# 示例:date作为一个命令,输出当前日期,并输出

echo "Current date and time: $(date)"
# 使用 $()能达到同样的效果
管道 |(竖杠)

管道符号用于将一个命令的输出作为另一个命令的输入。
ls -al | grep "myfile"
# 列出当前目录下全部信息,并筛选出包含 "myfile" 的行重定向>(大于号)和 和 >>)</strong></p>> 将标准输出重定向到文件,会覆盖文件内容。>> 将标准输出追加到文件末尾。
echo "Hello, World!" > output.txt
# 将 "Hello, World!" 写入 output.txt,覆盖原内容

echo "Hello again!" >> output.txt
# 将 "Hello again!" 追加到 output.txt 末尾输入重定向 (>)
2> 将标准错误重定向到文件,会覆盖文件内容。2>> 将标准错误追加到文件末尾。
echo 0</ul>
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

公西颖初 发表于 2025-10-31 08:59:28

新版吗?好像是停更了吧。

骂治并 发表于 2025-11-28 04:16:58

这个好,看起来很实用

葛雅隽 发表于 2025-12-11 04:53:01

喜欢鼓捣这些软件,现在用得少,谢谢分享!

贺蛟亡 发表于 2025-12-12 22:44:45

感谢,下载保存了

古修蟑 发表于 2026-1-20 18:40:35

过来提前占个楼

林鱼 发表于 2026-1-20 21:17:47

这个好,看起来很实用

麓吆 发表于 2026-1-22 22:19:34

感谢,下载保存了

姊囝 发表于 2026-1-24 03:20:14

谢谢楼主提供!

趣侮 发表于 2026-2-1 02:24:50

喜欢鼓捣这些软件,现在用得少,谢谢分享!

瘴锲如 发表于 2026-2-2 02:32:15

感谢发布原创作品,程序园因你更精彩

琉艺戕 发表于 2026-2-2 03:13:30

感谢分享,学习下。

盖彗云 发表于 2026-2-3 13:42:07

这个有用。

求几少 发表于 2026-2-4 03:38:26

感谢发布原创作品,程序园因你更精彩

度阡舅 发表于 2026-2-4 22:35:54

谢谢分享,试用一下

豺独 发表于 2026-2-5 04:59:38

前排留名,哈哈哈

于映雪 发表于 2026-2-7 08:01:50

感谢分享

岭猿 发表于 2026-2-8 02:56:48

这个有用。

高小雨 发表于 2026-2-8 14:45:28

喜欢鼓捣这些软件,现在用得少,谢谢分享!

辉伫 发表于 2026-2-9 00:28:24

这个好,看起来很实用
页: [1] 2
查看完整版本: shell脚本基本概念和命令小结