shell编程规范与变量

目录

shell

什么是shell

linux系统中shell的种类

什么是脚本

shell脚本的构成

脚本执行的方式

重定向与管道操作

交互式硬件设备

  重定向操作

管道 

变量

变量的类型

变量名

自定义变量

怎么定义变量

命令

 赋值

变量作用范围

全局变量

环境变量

位置变量

命令行参数

预定义变量

运算

整数运算

简易计算器运算


shell

什么是shell

将人类语言转化为计算机的二进制,计算机内核处理,再将二进制转化成人类能识别的语言。shell介于二进制与人类语言之间,也就是解释器

linux系统中shell的种类

bash linux默认的shell
tcsh 整合了csh的功能,可以提供比csh更强大的功能
csh 类似C语言的shell
nologin 也是shell的一种类型,禁止用户登陆。

cat /etc/shells 查看系统的默认shell

除非指定,默认都是bash

什么是脚本

它是扩建语言、动态语言,也是一种编程语言。
控制软件应用程序,脚本都是以文本形式保存。只在调用时才会进行解释或编译,可以执行文本当中的特定命令,是按行执行的

shell脚本的构成

第一类 开头注明解释器 如#!/bin/bash  #!/usr/bin/python
第二类 执行语句,都是系统支持的命令格式,只要系统能够执行的语句(包含第三方扩展命令)都可以作为执行语句
第三类 注释语句 #表示注释,注释的代码将不会执行

默认脚本格式 xxx.sh

脚本执行的方式

1.不需要赋予执行权限就可以执行
sh
source 点命令,也就是符号. 是bash的内部命令,是系统自带的。可以读取文件当中的可执行命令,然后会加载到shell中,不用重启直接生效

2.赋权执行
赋执行权限
chmod +x
chmod 777
./ 相对路径执行 .表示当前目录
/ 绝对路径执行
这两种方式都必须要有执行权限

工作当中都是赋权执行,sh和source只限于调试阶段。都是用绝对路径执行
脚本都是和定时任务结合

重定向与管道操作

交互式硬件设备

类型 设备文件 文件描述编号 默认设备
标准输入  /dev/stdin0键盘
标准输出 /dev/stdout1显示器
标准错误输出/dev/stderr2显示器

  重定向操作

类型操作符用途
重定向输入<从指定文件读取数据,可以理解为免交互
重定向输出>把指定结果保存到文件中,覆盖原有的内
>>在当前内容的尾部追加,不覆盖原有内容
重定向错误输出2>将错误的信息保存到指定文件,覆盖原有内容
2>>将错误的信息保存到指定文件,不会覆盖原有内容
混合输出&>标准和错误都保存到文件中,覆盖原有内容

管道 

 |符号,是一种命令行符号,用于将一个命令的输出传递给另一个命令作为输入。它可以用于连接多个命令,构成一个管道,使得一个命令的输出可以作为另一个命令的输入。

变量

变量需要有范围、类型。
自定义变量  用户指定需要的参数

变量的类型

1.int型 整数
2.string字符串
3.布尔 true false
4.浮点 小数

变量名

固定名称 用户自定义 系统预设
1.不要使用linux系统的操作命令或者系统命令来指定变量名
2.不要用中文指定变量名
3.不能使用特殊符号开头,可以用_开头
4.默认原则:最好使用名称的英文指定变量名
5.要有注释,解释代码用途,离职后好交接

自定义变量

怎么定义变量

格式: 变量名=变量值
变量名区分大小写

命令

查看变量值
echo ${变量名}

设置为只读变量
readonly 变量名
1.只读变量不能重新赋值
2.只读变量不能删除

删除变量
unset 变量名

read

通过read命令来获取变量
-p 指定提示符,提示用户输入数据
read -p "" 变量名

 赋值

赋时引号作用

` ` 反撇号 命令替换,把命令执行的结果赋值给变量名
' ' 单引号 强引用,打印的变量只会输出变量名,不会输出变量值
" " 双引号 弱引用,打印变量的赋值

变量作用范围

默认情况下新定义的变量只能在当前的shell环境生效

全局变量

在程序和脚本中以及全部的shell环境中都可以被引用
export 声明全局变量
一旦有重命名的变量非常麻烦,可能导致未知的不确定性,难以调试。

export 临时声明只能在当前shell中用,重启失效

/etc/profile 对所有人生效
/root/.bashrc.profile 只能对root生效
/root/.bashrc 只能对root生效

环境变量

系统提前创建好的或者是员工添加的,用来设置用户的工作环境,如配置系统行为、传递信息、控制程序执行

系统环境变量 所有人都可见、可用
用户级环境变量 只能对当前用户开放和使用
$USER 表示用户名称
$HOME 用户的宿主用户
$PWD 表示当前所在用户
$PATH 可执行程序的默认路径

位置变量

命令行参数

脚本运行时,从外部传递变量值,让脚本来运行,可以根据需要来进行处理
$n n表示的是数字 1 2 3 4 5 6 7 8 9 ${10},10以上的参数要用{}括起来

$0 表示命令本身
$1 $2 从左往右依次赋值。要在脚本执行时在外部传入变量值

例 1-11位相加

num1=$1
num2=$2
num3=$3
num4=$4
num5=$5
num6=$6
num7=$7
num8=$8
num9=$9
num10=${10}
num11=${11}
sum=$(($1+$2+$3+$4+$5+$6+$7+$8+$9+${10}+${11}))
echo $sum

预定义变量

编程语言或者脚本解释器提供的,可以自动设置和更新,但是由编程语言和脚本解释器自动完成,人工不能修改

$* $@ 表示命令和脚本需要处理的参数
$* 加引号时会把参数当成一个整体处理,不加引号会把参数分别处理
$@ 加不加引号都会把参数分开处理
$# 统计传递给脚本的参数的个数
$? 表示一条命令或者脚本执行后的返回码,返回码是0表示执行正确,所有非0的返回码都表示执行错误(只能返回上一次命令或者脚本执行的返回码)

运算

整数运算

i=$(($a+$b)) 

i=$[12*5]

let i=12*6

+-*/ % 加、减、乘、除、取余

i=$(expr $a+$b)  乘法前要加\

i++    相当于i=$(($i+1)) 先赋值再加 每次自加1
i--      先赋值再减 每次自减1
i+=1  每次自加2
++i    先加再赋值,每次自加1
--i      先减再赋值,每次自减1

简易计算器运算

bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。

 简易计算器,可以支持小数运算
echo  运算 | bc

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值