shell编程基础

shell是一个命令行解释,它为用户提供了一个向linux发送请求以便运行的程序,用户可以使用shell来启动、挂起、停止甚至是编写一些程序。

一.Shell基本要求

  • 脚本以#!/bin/bash 开头
  • 脚本需要有可执行权限x

1.shell脚本的执行方式

  • ./shell脚本的相对路径 或者 脚本文件绝对路径 (该方法需要可执行权限x)
  • sh 绝对路径或相对路径 (该方法不需要可执行权限x)

2.shell中的变量

1.变量可以由字母、数字和下划线组成,但是不能以数字开头
2.给变量赋值时,等号两边不能有空格
3.变量名习惯用大写

3.将命令的结果赋给变量

A='date'
A='$(date)'

4.linux中的预定义变量

预定义变量就是shell中事先预定好的变量

$$ :当前1进程的进程号

$!:后台运行的最后一个进程的进程号

$?:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令执行正确

5.位置参数变量

$n:n为数字,$0代表命令本身,$1到 9 表 示 命 令 后 面 的 参 数 , 但 有 10 个 以 上 的 命 令 时 , 参 数 需 要 用 大 括 号 包 含 , 例 如 9表示命令后面的参数,但有10个以上的命令时,参数需要用大括号包含,例如 910{10}

$*:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

$@:这个变量也代表所有参数,但是并没有看成一个整体

$#:表示参数的数量

6.设置环境变量

  • 将shell变量输出为环境变量/局部变量 :export 变量名=变量值

  • 让修改后的配置信息立即生效 :source 配置文件

  • 查询环境变量的值:echo $变量名

环境变量的设置应该在/etc/profile文件中进行设置,同时设置后要使用source命令使文件生效

7.shell中的运算符

  • 基本语法:$((运算式))$[运算式]expre m + n //expression表达式

注意expre运算符间要有空格,如果希望将expr的结果赋给某个变量,则使用''$(),当然使用前两种则不需要这种方式

  • expr \*,/,% 乘、除、取余

8.条件判断表达式

  • 基本语法:[ condition ] 注意condition前后要有空格,非空则返回true
  • [ condition ]&& echo ok || echo no当condition为true时,执行&&后面的语句,否则执行||后的语句
  • 常用的条件表达式:

1.字符串比较:=

2.两个整数比较。小于:-lt;小于等于-le;大于-gt;大于等于’-ge’;等于-eq;不等于-ne

3.按照文件权限进行判断。有读的权限-r;有写的权限-w;有执行的权限-x

[ -r /root/... ]

4.按照文件类型进行判断。文件存在并且是一个常规文件:-f;文件存在-e;文件存在并且是一个目录:-d;

9.流程控制

if语句

if[ 条件表达式 ]
then
   执行的代码
elif[ 条件表达式 ]
then 
   执行的代码
fi

case语句

case $变量名 in 
"值1" )
    如果变量值为 值1,则执行该代码
 ;;
"值2" )
   如果变量值为   值2,则执行改代码
 ;;
* )
   如果都不满足,则执行该打吗
;;
esac

循环语句1

for 变量 in 值1 值2 值3
do
   代码块
done

循环语句2

for(( 初始值;循环控制条件;循环变量 ))
do
   代码块
done

循环语句3

while [ 条件表达式 ]
do
   程序
done

当然在循环语句当中也是可以使用continue和break来进行循环控制的

10.函数

1.系统函数

basename 返回完整路径/后的名字,常用于获取文件名
basename [path] [suffiex]

image

####dirname 返回完整路径最后/前面的部分,常用于返回文件夹路径

dirname [文件绝对路径]

image

read读取控制台输入
read (选项) (参数) 变量

-p:指定读取值时的参数提示符
-t:指定读取值时的等待时间,如果没有在指定时间内输入,就不再等待

image

1.自定义函数

#声明函数
function funName()
{
    程序块
}
#调用函数
funName 

如果我们要想函数中传递参数,使用$n方式进行传递

function getSum()
{
    A=$[ $1+$2 ]
    echo $A
}
getSum 1 3
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值