shell脚本学习之bash变量

bash变量的命名
  1. 变量名称可以由字母,数字和下划线组成,但是不能以数字开头。
  2. 在bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定类型为数值型。
  3. 变量用等号连接值,等号左右不能有空格
  4. 变量的值如果有空格,需要使用单引号或双引号。
  5. 可以使用反引号包含命令或者$(命令)赋制给变量 name= $(date)
bash变量的分类
  1. 用户自定义变量
    - 只在当前的shell中有效
  2. 环境变量
    - 这种变量主要用来保存和系统操作环境相关的数据会在当前的shell和这个shell的所有子shell当中生效,
    - 如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效。
    - 系统常见的环境变量PATH,系统查找命令的路径。如ls命令,当在命令行输入ls时,它会在$PATH下的所有可执行bin文件中查找,如果不在就报命令执行错误。
    - export 用来将变量声明为全局变量
  3. 位置参数变量
    - 这种变量主要用来向脚本当中传递参数或者数据。变量名不能自定义,变量的作用是固定的?
  4. 预定义变量
    - 是bash 中已经定义好的变量
变量叠加

通过实现变量的叠加

系统提示盘符的变量设置(基本没用)

在这里插入图片描述
在这里插入图片描述

位置参数变量

$n
n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含如 ${10},可以理解为传进去的参数。 类似于Java在cmd命令框中对String[] args进行传参。
测试脚本
在这里插入图片描述
在这里插入图片描述

$* 这个命令代表命令行中的所有参数, $*把所有的参数看成一个整体
测试
在这里插入图片描述
在这里插入图片描述

$@ 会把所有的参数看成一个整体,但是会将每个参数当成个体来对待
$* 和 $@的区别就是在for兑换中, $* 会将所有的参数当成一个整体即一个个体,但是 $@会将所有的参数看成一个集合即多个个体。
在这里插入图片描述
$# 代表参数的个数
在这里插入图片描述

预定义变量

$? 最后一次执行的命令的返回状态。如果这个变量的值为0,代表上一条命令正确执行;如果这个变量的值非0,则证明上一个命令执行不正确了。
在这里插入图片描述

$$ 当前进程的进程号(PID)
在这里插入图片描述
$! 后台运行的最后一个进程的进程号

read命令

#!/bin/bash
read -t 10 -p "please input your name:" name
echo "your name is $name"
# -t 秒数  read 命令会一直等待用户输入,使用此选项可以指定等待时间
# -p 提示消息 在等待read 输入时 输出提示消息
read -s -t 10 -p "pelase input your age:" age
# -s是隐藏输入的参数 适用于机密文件的输入
echo -e "\n"
echo "your age is $age"

read -n 1 -t 10 -p "pelase input your gender[M/F]:" gender
echo -e "\n"
echo "sex is $gender"
# -n 1 代表只接收一个输入字符就会执行

撤销变量 unset

我们在使用shell来定义变量时 在命令行里面设置的变量 例如 A=1,那么在该会话中,变量一直存在,我们取消变量可以使用unset命令。
unset A

声明静态变量 readonly

readonly B=3 不能使用unset撤销,除非重新开启

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值