shell基本语法

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

Shell语法

Shell是一个命令行解释器,他为用户提供一个向Linux内核发送请求以便于运行程序的界面系统级程序。

脚本格式要求

  1. 脚本以#!/bin/bash开头
  2. 脚本需要有可执行权限
执行sh文件时,需要有执行权限
chmod u+x ./hello.sh
./hell.sh  # 可以执行成功

或者直接
sh ./hello.sh


Shell变量

Linux Shell中的变量分为,系统变量和用户自定义变量

系统变量$HOME,$PWD,$SHELL,$USER

定义shell变量

定义变量:变量名=值

撤销变量:unset 变量

声明静态变量:readonly 变量,不能unset

规则

  1. 变量名称可以由字母、下划线和数字组成,但是不能以数字开头。
  2. 等号两侧不能有空格
  3. 变量名称一般习惯为大写

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会将pathnamestring中的suffix去掉


dirname:返回完整路径最后/的前面的部分,常用于返回路径部分

dirname 文件的绝对路径



自定义函数
基本语法
[ function ] funname[()]
{
	Action
	[return int;]
}

调用函数,直接写函数名:funname [值]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值