博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux Shell脚本系列之二
阅读量:6881 次
发布时间:2019-06-27

本文共 1535 字,大约阅读时间需要 5 分钟。

  • shell是干嘛用的?
    shell是一脚本语言,没有编译过程,不像Java等其他编程语言一样复杂,它面向的对象应该是服务器,为了运维人员方便管理服务器而去实现某些操作。而不是说用shell去写一个app,它没这个能耐。

shell变量

  • 变量是任何一门编程语言不可少的组成部分,它用于存储数据。
  • 通常脚本语言不需要声明变量的类型,直接赋值就可以了。
  • 而在Bash中,变量的默认赋值都是一个字符串,无论你赋值的时候有没有加上引号,它都是当作字符串去存储。
  • 变量名不能以数字开头,可以由数字字母下划线组成。
变量的分类
  • 用户自定义的变量
    变量名=变量值(给变量赋值时,不要有空格,不然系统会一个你是在输入命名,所以会报命令找不到的错误)
    $变量名或${变量名}:调用变量值
    set:查看当前已定义的变量
    set -u:可以知道调用变量值时可以知道该变量是为空还是未定义
    unset:用于删除变量
    sum=$var+$x按道理应该输出10,结果输出的是5+5,这是因为变量赋值都当作是字符串,所以下面才有sum=$var$x输出55

举个栗子1

  • 系统环境变量:主要保存和系统操作环境相关的数据,可自定义,但真正对系统生效的变量和作用是固定的。
    环境变量和用户自定义变量的区别,环境变量是全局变量,用户自定义变量是局部变量
    定义环境变量:
    export 变量名=变量值 (声明并赋值)
    变量名=变量值
    export 变量名 (先赋值后声明)
    env:只查看环境变量用命令
    $PATH:系统查找命令的路径
    其实我们平时使用的命令,按道理都是需要打路径下的可执行文件去执行的,但我们都不会这样去使用。
    比如说ls命令,按道理应该是/bin/ls可是我们只是使用ls就成功运行了该文件,为什么呢?
    这是因为环境变量$PATH的作用,当我们打出ls时,它会在$PATH里头存储的路径下去找对应的可执行文件
    那么按照这个思路,我们可以把存放自己写的脚本那个文件目录放到$PATH里头,那么我们就可以很轻松的去调用了

举个栗子2
locale:查询当前系统的语系
LANG:定义系统主语系的变量,修改该值只是临时生效
/etc/sysconfig/i18n:修改这个文件重启服务器后永久生效

  • 预定义变量:变量名和该变量对于的作用都是固定的,不可自定义,位置参数变量也是预定义变量的一种
    1.位置参数变量
    $n:n为数字,$0代表命令本身,$1-$9代表1到9的参数列表,大于或等于10的用用花括号包起来{$10}
    $*:代表命令行中的所有参数,把所有参数看作一个整体
    $@:代表命令行中的所有参数,把每个参数区分看待
    $#:代表命令行中的所有参数个数

利用位置参数变量写一个求和脚本
求和可以使用
let命令,如
let sum=var1+var2
也可以使用
(()),如
sum=$((var1+var2)) 或 $(($var1+$var2))
使用
操作符[]也可以这样
sum=$[$var1+var2]
$*
$@的区别
$*被扩展为
$1c$2c$3等,其中c为IFS的第一个字符
$@被扩展为
$1 $2 $3

举个栗子4
$*看成一个整体,所以只循环了一次。$@把每个参数区分看待,所以循环了4次
2.预定义变量
$?:最后一次执行命令的返回状态,0为正确执行,非0为错误执行
$$:当前进程的进程号 (PID)
$!:后台运行的最后一个进程的进程号

read变量:接收键盘输入
  • -p:提示信息,等待输入时的提示信息
  • -t:指导等待输入时间
  • -n:指定接收的字符长度
  • -s:隐藏输入内容,适用于密码输入之类,比如我们输入登录密码,输入时你是看不到你输入了什么

举个栗子5

转载地址:http://pybbl.baihongyu.com/

你可能感兴趣的文章
PostgreSQL增强版命令行客户端(pgcli)
查看>>
关于SDN的未来,Linux基金会专访阿里云网络大神
查看>>
凯文·凯利:虚拟现实将取代微信!
查看>>
北航联合哈佛,研制出吸盘式仿生机器人
查看>>
廖方宇:数据与计算是科技创新倍增器
查看>>
redis 集群搭建
查看>>
Creating a pop up TitleWindow using the PopUpButton control in Flex
查看>>
联嘉祥牵手8Manage 打造信息化采购管理平台
查看>>
AOP静态代理解析1-标签解析
查看>>
mysql双主配合keepalived可用简析
查看>>
ArcGIS读取dem格式数据
查看>>
通过网站不能跳转登录的案例来看IP白名单的设置
查看>>
解决:eclipse更新maven项目JRE被更改版本的问题
查看>>
Linux之关机重启命令
查看>>
证监会叫停VR等行业跨界定增,福兮祸兮?
查看>>
宅米网技术变迁——初创互联网公司的技术发展之路
查看>>
程序员界年度人口普查:6成以上开发者日工作超9小时,且从不运动
查看>>
hbase meta表数据存储
查看>>
JavaScript中局部变量与全局变量
查看>>
PHP中的函数声明与使用
查看>>