一、Shell 编程入门
1. 认识 Shell
Shell 是一个命令行解释器,用于用户与操作系统之间的交互。用户可以通过Shell启动、停止、挂起程序,或编写Shell脚本来自动化任务。
2. Shell 脚本的创建与执行
- 创建脚本文件,以
#!/bin/bash
开头,指定解释器。 - 赋予脚本执行权限(
chmod +x script.sh
)。 - 执行脚本:
./script.sh
或bash script.sh
。
二、Shell 变量
1. 系统变量和自定义变量
- 系统变量:如
$HOME
、$PWD
、$USER
等,由系统定义。 - 自定义变量:
- 定义:
variable_name=value
- 撤销:
unset variable_name
- 静态变量:
readonly variable_name=value
- 输出:
$variable_name
- 定义:
2. 变量的基本规则
- 变量名由字母、数字、下划线组成,不能以数字开头。
- 等号两边不能有空格。
- 变量名一般大写。
- 赋值命令结果给变量:
variable=
command`` 或variable=$(command)
3. 设置环境变量
export VARNAME=value
source config_file
刷新配置
4. 位置参数变量
$0
:脚本名$1-$9
:位置参数$*
和$@
:所有参数,但处理不同$#
:参数个数
5. 预定义变量
$$
:当前进程PID$!
:最近一个后台进程PID$?
:上一个命令的退出状态
三、运算符
$((expression))
或$[expression]
或expr
- 乘法使用
*
时需转义(\*
)
四、条件判断
- 使用
[ condition ]
,注意空格 - 逻辑与:
&&
- 逻辑或:
||
- 常用条件判断:
- 字符串:
=
- 整数:
-lt
,-le
,-eq
,-gt
,-ge
,-ne
- 文件:
-r
,-w
,-x
,-f
,-e
,-d
- 字符串:
五、流程控制
1. if 语句
- 单分支、多分支、嵌套if
2. case 语句
- 匹配特定值执行相应代码块
3. for 循环
- 语法1:
for var in list; do ... done
- 语法2:
for ((init; cond; iter)); do ... done
4. while 循环
while [ condition ]; do ... done
六、read 读取控制台输入
read [-p prompt] [-t timeout] variable
示例整理
1. 变量示例
#!/bin/bash | |
A=100 | |
echo "A=$A" | |
unset A | |
echo $A # 应为空 | |
readonly B=3 | |
echo $B |
2. 运算符示例
#!/bin/bash | |
result=$((2+3)*4) | |
echo "Result: $result" |
3. 条件判断示例
#!/bin/bash | |
if [ "ok" = "ok" ]; then | |
echo "equal" | |
fi | |
if [ 22 -ge 21 ]; then | |
echo "大于或等于" | |
fi | |
if [ -f /root/shell/aaa.txt ]; then | |
echo "文件存在" | |
fi |
4. 流程控制示例
- if 语句
#!/bin/bash | |
if [ $1 -ge 60 ]; then | |
echo "及格" | |
else | |
echo "不及格" | |
fi |
- case 语句
#!/bin/bash | |
case $1 in | |
1) echo "周一";; | |
2) echo "周二";; | |
*) echo "other";; | |
esac |
- for 循环
#!/bin/bash | |
for i in 1 2 3 4 5; do | |
echo "Number $i" | |
done | |
sum=0 | |
for ((i=1; i<=100; i++)); do | |
sum=$((sum + i)) | |
done | |
echo "Sum: $sum" |
- while 循环
#!/bin/bash | |
sum=0 | |
i=1 | |
while [ $i -le 5 ]; do | |
sum=$((sum + i)) | |
i=$((i + 1)) | |
done | |
echo "Sum: $sum" |
- read 示例
#!/bin/bash | |
read -p "Enter a number: " num | |
echo "You entered: $num" |
实例(以输出任意数的乘法表为例)
1.touch test2.sh
创建test2.sh文件夹
2.vim test2.sh
在vim脚本中编写程序
3.chmod 777 test2.sh(如果不赋权会导致权限不够不能运行)
“777”三位数分别代表 文件的所有者 文件所在群组的其他用户 除此之外的其他用户
而7代表 rwx 也就是 read write和execute 赋予这三类权限
4../test2.sh
执行test2.sh文件