简单shell编程

一、什么是shell

  • Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash shell
  • Shell也是一门编程语言<解释型的编程语言>,即shell脚本
  • 一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不同的

二、Shell脚本的执行方式

  • 第一种:输入脚本的绝对路径或相对路径,首先要赋予+x权限
    • 绝对路径
    • ./脚本名
  • 第二种:bash或sh+脚本
    • sh 脚本名
  • 第三种:在脚本的路径前再加“.”
    • ./路径
    • . ./ 脚本名
  • 区别:第一种和第二种会新开一个bash,不同的bash中的变量无法共享

三、Shell中的变量

  • Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看系统变量
    • 常用的系统变量:$HOME、$PWD、$SHELL、$USER等等
    • 显示当前shell中所有变量:set
  • 定义变量
    • 变量名=值
    • 注意:
      • 等号两侧不能有空格
      • 变量名称一般习惯为大写
      • 双引号和单引号有区别,双引号仅将空格脱意,单引号会讲所有特殊字符脱意
  • unset 变量名:撤销该变量
  • readonly 变量名=变量值:声明静态的变量,不能unset
  • export 变量名:可以把变量提升为全局环境变量,可以供其他shell程序使用
  • 将命令的返回值赋值给变量
    • A=`ls -la`,反引号,运行里面的命令,并把结果返回给变量A
    • A=$(ls -la),等价于反引号
  • Shell中的特殊变量
    • $? 表示上一个命令退出的状态
    • $$ 表示档案进程编号
    • $0 表示当前脚本名称
    • $n 表示n位置的输入参数(n代表数字,n>=1)
    • $# 表示参数的个数,常用于循环
    • $*和$@都表示参数列表
      • $*和$@都表示传递给函数或脚本的所有参数,不被双引号""包含时,都以$1 $2 ...$n的形式输出所有参数
      • 当它们被双引号""包含时,"$*"会将所有的参数作为一个整体,以"$1 $2 ... $n"的形式输出所有参数;“$@”会将哥哥参数分开,以“$1” “$2”...“$n”的形式输出所有参数

四、运算符

  • 格式:expr m + n或$((m+n)),expr运算符间要有空格

五、for循环

  • 第一种
for N in 列表
do
    语句
done
  • 第二种
for ((i = 0; i <= 5; i++))
do
    echo "welcome $i times"
done

六、while循环

  • 第一种
while expression
do
命令
done
  • 第二种
i=1
while ((i<=3))
do
    echo $i
    let i++
done

七、case语句

case $1 in
start)
    语句
    ;;
stop)
    语句
    ;;
*)
    语句
esac

八、read命令

  • read -p(提示语句) -n(字符个数) -t(等待时间)
    • read -p "please input your name:" NAME

九、if判断

if condition
then
    statements
elif condition
then statements
else
    statements
fi
  • 判断语句
  • [ condition ]注意condition前后要有空格,非空返回true

十、常用的判断条件

  • = 字符串比较
  • -lt 小于
  • -le 小于等于
  • -eq 等于
  • -gt 大于
  • -ge 大于等于
  • -ne 不能于
  • -r 有读的权限
  • -w 有写的权限
  • -x 有执行的权限
  • -f 文件存在并且是一个常规文件
  • -s 文件存在且不为空
  • -d 文件存在并且是一个目录
  • -b 文件存在并且是一个块设备
  • -L 文件存在并且是一个链接

十一、Shell自定义函数

[ function ] funname [()]
{
    语句
    [retuen int;]
}
  • 注意
    • 必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其他语言一样先预编译
    • 函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。retuen后跟数值n(0-255)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值