变量

作者: 时海观察者 | 来源:发表于2019-01-12 00:33 被阅读1次

自定义变量

$ cat variable_scope.sh
#!/bin/sh
echo $a
a=2
echo $a
$ chmod a+x variable_scope.sh
$ a=1
$ ./variable_scope.sh

2
$ echo $a
1

在派生的进程中,$a原本不存在,所以最开始打印的为空,在shell脚本执行完毕后进程结束,派生进程中的$a被销毁,也不会影响到原shell中的$a

$ a=1
$ export a
$ ./variable_scope.sh
1
2
$ echo $a
1

export a会在派生进程时,制作一个a的副本,所以$a最开始是存在的,但是在新进程中对变量的修改不会影响到原来的变量。

$ a=1
$ source ./variable_scope.sh
1
2
$ echo $a
2

source会使用本地的进程运行shell脚本,所以a在最开始是存在的,同时对a的修改也会影响到本地的a

内建变量

当运行cmd.sh arg1 arg2 arg3时,有一些内建的变量会自动设置

  • $0: cmd.sh,程序名
  • $1: arg1,第一个参数
  • $2: arg2,第二个参数
  • $3: arg3,第三个参数
  • $#: 3,参数列表元素个数
  • $@: arg1 arg2 arg3,所有参数
  • $*,忽略"后解析出的所有参数
  • shift,移除参数列表的第一个参数

$?,上一个命令的退出值,正常退出为0

$$,当前运行shell的PID
$!,上一个后台运行的命令的PID

IFS,中间字段分隔符

#!/bin/sh
old_IFS="$IFS"
IFS=:
echo "Please input some data separated by colons(:) ..."
read x y z
IFS=$old_IFS
echo "x is $x y is $y z is $z"

默认值

  • :-,变量为null时使用默认值
  • :=,变量未定义时使用默认值
$ # 变量为null
$ a=""
$ echo ${a:-loki}
loki
$ # 变量未定义
$ echo ${b:=maomi}
maomi

相关文章

  • mysql变量

    变量 /*系统变量:全局变量会话变量 自定义变量:用户变量局部变量 */ 一、系统变量 /*说明:变量由系统定义,...

  • mysql存储过程和函数149-169

    变量 /*系统变量:全局变量会话变量自定义变量:用户变量局部变量*/ 一、系统变量 说明:变量有系统提供,不是用户...

  • php 变量和常量

    一、变量 创建变量以 $ 开头,以 ; 结尾 可变变量从变量中解析出变量名 变量赋值 将变量b 将变量b 销毁变量...

  • Golang入门一:变量

    变量声明 变量初始化 变量赋值 变量交换 匿名变量

  • bash脚本编程-变量,变量类型

    bash变量类型: 环境变量,本地变量,位置变量,特殊变量。 本地变量: bash: VARNAME=value ...

  • MySQL(十八)变量

    系统变量:全局变量、会话变量 自定义变量:用户变量、局部变量 一、系统变量 说明:变量由系统定义,不是用户定义,属...

  • 类,变量,迭代器

    1、变量 python中实际有4种变量,分别是全局变量,类变量,实例变量,局部变量。 - 全局变量:类之外的变量,...

  • Linux下的变量

    Linux下的变量 Linux变量 Linux下的变量主要分为三种:本地变量、环境变量和位置变量本地变量本地变量是...

  • 变量及检测数据类型

    变量定义var 变量名 = 变量值; 先定义在赋值var 变量名; 变量名 = 变量值; 定义多个变量var 变量...

  • Java学习笔记-1.4.2变量的分类

    变量的分类 从整体上可将变量划分为局部变量、成员变量(也称为实例变量)和静态变量 局部变量、成员变量、静态变量的区...

网友评论

    本文标题:变量

    本文链接:https://www.haomeiwen.com/subject/pgcqdqtx.html