bash变量

什么是变量?

变量是计算机内存的单元,其中存放的值可以改变,方便程序调用

变量命名规则:

  • 变量名必须以字母或下划线打头,名字中间只能由字母,数据和下划线组成
  • 变量名的长度不得超过255个字符
  • 变量名在有效的范围内必须是唯一的
  • 在bash中,变量的默认类型都是字符串型

变量按照存储数据分类

  • 字符串型
  • 整型
  • 浮点型
  • 日期型

变量的分类

  • 用户自定义变量。变量自定义
  • 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
  • 预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

自定义变量

定义变量

变量名=变量值 注意:等号两侧不能有等号

变量名=“hello world” #注意字符串中有空格需要用双/单引号

变量调用:

echo $变量名

eg: echo $name

变量叠加:

x1=123

y1=234

将x1和y1的值叠加赋值给z1

方法一:z1="$x1""$y1"

方法二:z1=${x1}${y1}

变量查看

  • set   可以查看系统所有变量以及对应的变量值

    -选项:

        -u 如果设定此选项,调用未声明变量时会报错(默认无任何提示)

变量删除

unset 变量名

eg: unset x

环境变量

环境变量与用户自定义变量的区别?

环境变量是全局变量,用户自定义变量是局部变量;(用户自定义变量只在当前的shell中生效,环境变量在当前shell和这个shell的所有子shell中生效)

定义环境变量

  • export 变量名=变量值

变量名=变量值

export 变量名

查看环境变量

set  #查看所有变量

env  #查看环境变量

调用环境变量 

echo $变量名

删除环境变量

unset 变量名

注意:删除环境变量需要在父shell下才能删除,查看进程树命令(pstree),退出当前shell用命令exit

系统中常用环境变量

HOSTNAME: 主机名

SHELL : 当前的shell

TERM :终端环境

HISTSIZE :历史命令条数

SSH_CLIENT :当前操作环境是用SSH连接的,这里记录客户端ip

SSH_TTY :ssh连接的终端时pts/1

user :当前登录的用户

PATH环境变量 :系统查找命令的路径

echo $PATH  #查看PATH环境变量

PATH = "$PATH":/root/sh       #添加PATH变量的值

PS1环境变量

  • ps1变量:命令提示符设置
  1.  \d :显示日期,格式为“星期 月 日”
  2. \H:显示完整的主机名。如默认主机名 “localhost.localdomain”
  3. \t :显示24小时值时间,格式为 “HH:MM:SS”
  4. \A :显示24小时制时间,格式“HH:MM”
  5. \u: 显示当前用户名
  6. \w 显示当前所在目录的完整名称
  7. \W 显示当前所在目录的最后一个目录
  8. \$:提示符如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”

当前语系查询

locale  #查询当前系统语系

- LANG: 定义系统主语系的变量

- LC_ALL :定义整体语系的变量

语系变量LANG

echo $LANG #查看系统当前语系

locale -a |more  #查看linux支持的所有语系

查询系统默认语系  cat /etc/sysconfig/i18n  下此开机后默认语系

 预定义变量

$?   最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确。

$$   当前shell脚本运行的当前进程号(PID)

$! 后台运行的最后一个进程的进程号(PID)

位置参数变量:

$n  n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}

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

$@  这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

$#   这个变量代表命令行中所有的参数的个数

eg:

vi weizhicanshu.sh

#!/bin/bash

num1=$1

num2=$2

sum=$(($num1+$num2))      #变量sum的和是num1加num2

echo $sum

运行脚本

sh weizhixingcanshu.sh $1 $2

$*与$@的区别

#!/bin/bash

for i in "$*"       #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次

do 

echo "The parameter is : $i"

done

for y in "$@"      #$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次

do

echo "parameter : $y"

done

注意:$@和$*都应该用“”括起来

接收键盘输入

read [选项]【变量名】

选项:

  •  -p "提示信息" :在等待read输入时,输出提示信息
  • -t  time            :read命令一直等待用户输入,使用此选项可以指定等待时间
  • -n 字符数  :read命令只接受指定的字符数,就会执行
  • -s :隐藏输入的数据,适用于机密信息的输入(比如:密码)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值