shell 中变量的介绍

1. 变量的基本规则

  1. 变量的命名规则同其他编程语言,即以字母、下划线开头。

  2. 变量的名称的长度不得超过255个字符。

  3. 变量具有作用域,局部变量仅作用于当前 shell, 全局变量作用于当前 shell 及其子 shell。

  4. 在 bash 中,变量的默认类型都是字符串类型。例如,你定义变量 a=123, 此时123被认为是字符串。

2. 变量的类型

1. 本地变量

为用户自定义变量。
属于局部变量,只能在当前 shell 中有效。

1. 本地变量的定义和赋值

变量在定义时,变量名,赋值号,值之间不能含有空格。因为空格会被认为是命令和参数之间的间隔。

字符串需要用双引号(特殊符号依然发挥作用)或单引号(特殊符号当做普通字符处理)括起来。

2. 变量的调用

变量调用需要在变量前加 ‘$’ 符号(定义时不需要,PHP 语言中都需要),例如 :

echo $PTAH



3. 变量的叠加

有两种形式:

"$varname"
${varname}



举例:

x=1
y=2
z=x+y
echo $z

结果为 “1+2” 这个字符串。

4. set 命令

查询系统下所有生效的变量,包括自定义变量和环境变量。

默认情况下,若变量未被定义,则会显示空行。若使用 -u 选项,则在查看未声明的变量时会报错。

set -u
echo $a


5. unset 命令

用于删除变量。

2. 环境变量

属于全局变量,可以在当前 shell 和子 shell 中有效。

用于保存和系统操作环境相关的变量,可以自定义,但不常用。

但是,对系统生效的环境变量名和其作用是固定的,例如 PATH, PS1等。

注意父 shell 中定义的变量不能在 子 shell 中删除。

1. 环境变量的定义

建议大写,用以区分命令,因为命令全是小写。

export a="123"



2. env 命令

用户查看环境变量(不包括自定义变量)。

3. PS1 变量

命令提示符样式,如果命令中使用续行符(反斜杠+回车),会接着显示 PS2定义的样式。另外还有 PS4,但不常用。

4. 语系变量

系统默认语系配置文件,系统上电后会读取此配置赋值给 LANG 变量。

/etc/sysconfig/i18n



5. locale 命令

用于查看语系

LANG=zh_CN.UTF-8
系统当前主语系,即时设置即时生效。

LC_ALL=
整体语系,不常用。

3. 预定义变量

1. 预定义变量

bash 定义的变量,变量名不能改变,作用固定。只能改变其值。

$? 

最后执行命令的返回状态,即进程的返回值,0表示成功,非0表示失败,常用。另外,脚本程序中的与或逻辑判断实际上判断的就是其的返回值。

$$

当前正在运行的进程的 PID号

$!

最后执行的后台进程的 PID号

2. read 命令

选项

-p 打印提示信息
-t 输入等待时间
-n 接受的字符个数
-s 输入时隐藏输入内容

实例

!/bin/bash
read -p "username : " -t 30 name
read -p "password : " -s password
echo -e "\n"
read -p "sex(m/f) : " -n 1 sex

-p 用于提示输入用户名,
-t 用于必须在30s 内输入,
-s 隐藏输入的密码,
-n 只允许输入一个字母代表性别,

4. 位置参数变量

这里所说的位置指的是输入的命令及参数的位置。
属于预定义变量,用于向脚本传递参数和数据。

$n 

表示脚本的第n个参数

$* 

表示脚本的全部参数,并当做整体

$@ 

表示脚本的全部参数,并区别对待

$# 

表示脚本的参数个数

1. 加法实现

#!bin/bash
num1=$1
num2=$2
sum=$(($num1 + $num2))
echo $sum

2. 循环打印参数

#!bin/bash
for i in "$*"
    do
        echo $i
    done
for j in "$@"
    do
        echo $@
    done

若执行

#cmdname arg1 arg2 arg3

则会打印

arg1 arg2 arg3

arg1
arg2
arg3

前者当做整体,后者分别打印。

——观看慕课网 Tony 《shell编程之变量》的总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值