shell脚本
shell是用户跟内核通信的方式之一
语法
定义开头
#!/bin/bash
#!用来声明脚本由声明shell解释,默认使用shell
执行方式
在当前工作目录中,
- ./xxx.sh
先按照文章中指定的解析器解析,如果指定的解析器不存在,才会使用系统默认的解析器 - bash xxx.sh
指明先用bash解析器解析 - . xxx.sh
直接使用默认解析器解析(不会执行第一行#!,但第一行还是要写)
输入
read:在一行上显示和添加提示 需要加上-p
eg:read -p “请输入Num的值:” num
输出
echo
变量
定义变量:
变量名=变量值 eg:num=10
引用变量:
$变量名
unset:清楚变量值
查看环境变量
env
$#:传给shell脚本参数的数量
$*:传给shell脚本参数的内容
$1:运行脚本是传递给其参数的内容
$0:当前执行的进程名
$$:当前进程的进程号
脚本变量的特殊用法
"‘’(双引号): 包含的变量会被解释
"(单引号): 包含的变量会当做字符串解释
``(数字键 1左面的反引号): 反引号中的内容作为系统命令,并执行其内容,可以替换输出为一个变量
$ echo "today is date
"
today is 2012 年 07 月 29 日星期日 12:55:21 CST
条件测试
test命令:用于测试字符串、文件状态和数字
把字符串转化为数字:$((num))
控制结构【条件判断和循环】
条件判断:使用if语句进行条件判断,结合then、elif(可选)和fi
循环:
for循环:用于遍历一系列值。
while循环:在满足条件时循环执行一段代码。
until循环:在条件为假时循环执行一段代码。
# 条件判断
if [ $num -eq 0 ]; then
echo "Number is zero."
elif [ $num -gt 0 ]; then
echo "Number is positive."
else
echo "Number is negative."
fi
#fi为if语句的结束标志
# for循环
for i in 1 2 3 4 5; do
echo $i
done
# while循环
counter=0
while [ $counter -lt 5 ]; do
echo $counter
counter=$((counter + 1))
done
# until循环
counter=0
until [ $counter -ge 5 ]; do
echo $counter
counter=$((counter + 1))
done
函数
用户自定义函数:
用户可以通过关键字function或直接使用函数名来定义函数。
例如,定义一个简单的打印欢迎消息的函数:
welcome() {
echo "Welcome to my script!"
}
常见的内置函数包括echo、read、grep、cut、sed
grep:常见的内置函数包括echo、read、grep、cut、sed
grep “keyword” file.txt # 在文件中搜索关键字
grep -i “keyword” file.txt # 忽略大小写搜索
grep -r “pattern” dir/ # 递归搜索目录中的文件
cut:用于从文件或标准输入中提取指定字段或列
cut -f 1,3 file.txt # 提取文件中的第1和第3列
cut -d “,” -f 2 file.csv # 使用逗号作为分隔符提取第2列
echo “example” | cut -c 2-5 # 提取字符串中的第2到第5个字符