Shell 是用户与操作系统内核之间的接口,允许用户通过命令行输入来控制操作系统。它充当命令解释器,读取用户输入的命令并执行相应的操作。Shell 提供了强大的脚本编程能力,可以自动化许多任务。常见的 Shell 有 Bash(Bourne Again Shell)、Zsh(Z Shell)、Ksh(Korn Shell)等。
Shell 脚本是一种编程语言脚本,用于在 Unix/Linux 操作系统上执行命令。它是一系列命令的集合,通常保存在一个文件中,可以通过运行脚本文件来执行这些命令。
在 Shell 脚本中,注释是通过 #
字符来实现的。任何在 #
后面的内容都会被忽略,不会被执行。
# 这是一个单行注释
# echo "Hello, World!"
文章下面讲的是shell是Bash的语法, 所有语法可以直接在终端使用, 也可以写在一个 .bash
或 .sh
的文件中, 然后通过 ./filename
来执行。(要想执行, 需要给文件可执行的权限, 下面会讲到)
文件开头先写上下面内容,
#!/bin/bash
#!/bin/bash
是一种称为 "shebang" 或 "hashbang" 的特殊注释,用于指定脚本的解释器。
指定解释器:#!/bin/bash
告诉操作系统这个脚本应该由 /bin/bash
程序来解释执行。/bin/bash
是 Bash(Bourne Again Shell)的路径。
执行权限:当你在 Unix/Linux 系统中运行一个脚本时,操作系统会根据这个 shebang 行来决定用哪个解释器来执行脚本内容。#!/bin/bash
使得脚本能够以 Bash 语言执行,即使脚本的扩展名不是 .sh
。
变量定义与使用
在 Shell 中,变量的定义不需要使用数据类型。可以直接用 =
号赋值,不要在 =
号两边加空格。变量的值可以通过 $
符号来引用。
my_var="Hello, World!"
echo $my_var
变量命名规则
变量类型
name="John Doe"
echo "Hello, $name"
number=42
echo "The number is $number"
数组赋值
arr=(value1 value2 value3)
读取数组元素
echo ${arr[1]}
变量替换
变量替换是指将变量的值插入到字符串中。
echo "My name is ${name}."
只读变量
定义只读变量后,其值不能被修改。
readonly val="value"
val="new_value" # 这将会报错
环境变量是可以在整个系统中使用的变量。它们通常在 Shell 会话开始时定义,可以影响系统的行为和操作。常见的环境变量有 PATH
、HOME
、USER
等。
使用 export
命令可以将变量设置为环境变量。
export MY_ENV_VAR="value"
使用 printenv
或 env
命令可以查看当前所有环境变量。
#!/bin/bash
0
read
命令read
命令用于从标准输入读取一行输入,并将其分配给一个或多个变量。
#!/bin/bash
1
-p
提示符-s
隐藏输入(常用于密码)-t
设置超时-n
限制输入字符数#!/bin/bash
2
eC++ho
命令echo
命令用于输出字符串到标准输出。
#!/bin/bash
3
-n
不换行-e
解析反斜杠转义字符#!/bin/bash
4
printf
命令printf
命令用于格式化输出,类似于 C 语言中的 printf
函数。
#!/bin/bash
5
%s
字符串%d
十进制整数%f
浮点数%x
十六进制数#!/bin/bash
6
if
语句#!/bin/bash
7
样例:
#!/bin/bash
8
case
语句#!/bin/bash
9
样例:
my_var="Hello, World!"
echo $my_var
0
test
命令test
命令用于条件判断,常与逻辑运算符结合使用。
-e
文件存在-f
文件是普通文件-d
文件是目录my_var="Hello, World!"
echo $my_var
1
-z
字符串为空-n
字符串非空=
字符串相等!=
字符串不相等my_var="Hello, World!"
echo $my_var
2
-eq
等于-ne
不等于-gt
大于-lt
小于-ge
大于或等于-le
小于或等于my_var="Hello, World!"
echo $my_var
3
for
循环my_var="Hello, World!"
echo $my_var
4
my_var="Hello, World!"
echo $my_var
5
while
循环my_var="Hello, World!"
echo $my_var
6
my_var="Hello, World!"
echo $my_var
7
until
循环my_var="Hello, World!"
echo $my_var
8
my_var="Hello, World!"
echo $my_var
9
Shell 函数用于封装代码块,以便多次调用。
name="John Doe"
echo "Hello, $name"
0
name="John Doe"
echo "Hello, $name"
1
name="John Doe"
echo "Hello, $name"
2
name="John Doe"
echo "Hello, $name"
3
上述内容涵盖了 Shell 脚本编程中的基础部分,包括输入输出、变量和函数、条件判断和循环等。通过理解和掌握这些内容,你可以编写功能强大的 Shell 脚本来