Shell语法
Shell是一个命令行解释器,他为用户提供一个向Linux内核发送请求以便于运行程序的界面系统级程序。
脚本格式要求
- 脚本以
#!/bin/bash开头 - 脚本需要有可执行权限
执行sh文件时,需要有执行权限
chmod u+x ./hello.sh
./hell.sh # 可以执行成功
或者直接
sh ./hello.sh
Shell变量
Linux Shell中的变量分为,系统变量和用户自定义变量
系统变量:$HOME,$PWD,$SHELL,$USER
定义shell变量
定义变量:变量名=值
撤销变量:unset 变量
声明静态变量:readonly 变量,不能unset
规则
- 变量名称可以由字母、下划线和数字组成,但是不能以数字开头。
- 等号两侧不能有空格
- 变量名称一般习惯为大写
A=$(date),将命令的返回值赋值给A
A=`date`,将命令的返回值赋值给A
设置环境变量
export 变量名=变量值:将shell变量输出为环境变量/全局变量
source 配置文件:将修改后的配置文件立即生效
echo $变量名:查询环境变量的值
将环境变量写在/etc/profile文件中
vim命令行模式:set nu显示行号
# shell文件,多行注释语法
:<<!
多行注释内容
!
位置参数变量
执行shell脚本时,如果希望获取到命令行的参数信息,就可以使用位置参数变量
$n:n为数字,$0表示命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包括如${11}
$*:这个变量代表命令行所有的参数,$*把所有的参数看成一个整体
$@:这个变量代表命令行所有的参数,$@把每个的参数区分对待
$#:这个变量代表命令行中所有参数的个数
预定义变量
shell本身中定义好的变量
$$:当前进程的进程号
$!:后台运行的最后一个进程的进程号
$?:最后一次执行的命令的返回状态。如果是0,则说明上一次命令正确执行;如果非0,则说明上一次命令执行不正确。
/root/shcode/text.sh &:以后台的方式运行
运算符
三种写法:$((运算式))或者$[运算式]或者expr m + n // 全称expression 表达式
推荐第二种
注意expr运算符间要有空格,需要将expr的结果赋值给某个变量,使用``
expr \*,乘号需要加上\。
三种写法(2+3)*4
RE1=$(((2+3)*4))
RE2=$[(2+3)*4]
RE=`expr 2 + 3`
RE3=`expr $RE \* 4`
条件判断
判断语句
基本语法:[ condition ],注意condition前后有空格
常用判断条件
=:判断字符串是否相等
两个整数比较
lt:小于
le:小于等于
eq:等于
gt:大于
ge:大于等于
ne:不等于
文件权限判断
-r:读的权限
-w:写的权限
-x:执行的权限
文件类型判断
-f:文件存在并且是一个常规的文件
-e:文件存在
-d:文件存在并且是一个目录
if判断
基本语法
if [ 条件判断式 ]
then
代码
fi
或者
if [ 条件判断式 ]
then
代码
else
代码
fi
或者多分支
if [ 条件判断式 ]
then
代码
elif
代码
fi
case语句
case $变量名 in
"值1")
代码
;;
"值2")
代码
;;
*)
代码
;;
esac
for循环
for 变量 in 值1 值2 值3
do
程序/代码
done
for(( 初始值;循环控制条件;变量变化))
do
程序/代码
done
while循环
while [ 条件判断式 ]
do
程序/代码
done
read读取控制台输入
read 选项 接受的变量
选项:
-p:指定读取时的提示符
-t:指定读取时等待的时间(秒)
例如:
read -p "请输入NUM1=" NUM1
echo $NUM1
read -t 10 -p "请在10秒内输入NUM2=" NUM2
echo $NUM2
函数
系统函数
basename:返回完整路径最后/的部分,常用于获得文件名
basename [pathname] [suffix]
basename [string] [suffix]
suffix为后缀,如果它被指定了,basename会将pathname或string中的suffix去掉
dirname:返回完整路径最后/的前面的部分,常用于返回路径部分
dirname 文件的绝对路径
自定义函数
基本语法
[ function ] funname[()]
{
Action
[return int;]
}
调用函数,直接写函数名:funname [值]

本文详细介绍了Shell脚本的基础知识,包括设置环境变量、使用位置参数、预定义变量以及各种运算符。还深入讲解了条件判断(if、case语句)、循环(for、while)和函数的使用。此外,还提到了命令行输入的读取及系统函数的运用,是学习Shell编程的实用教程。
887

被折叠的 条评论
为什么被折叠?



