003 shell变量、运算符

一、变量

shell所有变量都是字符串类型

a=999
echo $a

shell中的变量无需指定类型,直接定义。使用时加上==$==符号。

变量与=直接不能有空格,否则会报错

b = 999
结果会输出:
bash: b: command not found

变量相加:

a=999
b=999
c=999
echo $a+$b+$c

结果:

999+999+999

为什么?shell所有变量都是字符串类型。字符串加字符串,就是把字符串连接起来。

二、shell变量分类

1、自定义变量

2、系统变量

常用系统变量:

$HOME		当前用户home目录
$PWD		当前目录
$SHELL		系统shell
$USER  		用户

3、特殊变量

(1)$n

功能描述:n为数字。$0代表该脚本名称。$1~ 9 代 表 第 一 到 第 九 个 参 数 。 10 以 上 的 参 数 , 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数。10以上的参数,需要用大括号{}包含,如 910{10}。

#!/bin/bash
echo $0   	#输出文件名:1.sh
echo $1		#输出第一个参数:10
echo $2		#输出第二个参数:20
echo $3		#输出第一个参数:30
echo $4		#输出第一个参数:40
bash 1.sh 10 20 30 40

结果:

1.sh
10
20
30
40

(2)$#

功能描述:获取所有输入参数个数,常用于循环。

#!/bin/bash
echo $0         #输出文件名:1.sh
echo $1         #输出第一个参数:10
echo $2         #输出第二个参数:20
echo $3         #输出第一个参数:30
echo $4         #输出第一个参数:40
echo $#
bash 1.sh 10 20 30 40

结果:

1.sh
10
20
30
40
4

(3)$*、$@

功能描述:$*代表命令行中所有的参数,$*把所有的参数看成一个整体。$@也代表命令行中所有的参数,不过$@把每个参数区分对待。

#!/bin/bash
echo '$#'=$#
echo '$*'=$*
echo '$@'=$@
bash 2.sh aaa bbb ccc

结果:

$#=3
$*=aaa bbb ccc
$@=aaa bbb ccc
区别:

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

for j in "$@"
do
    echo $j
done

结果:

bash ff.sh aaa bbb ccc
aaa bbb ccc
aaa
bbb
ccc

(4)$?

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

#!/bin/bash
echo $[1/0]

执行脚本,结果为(执行异常):

3.sh: line 2: 1/0: division by 0 (error token is “0”)

此时输出$?变量:

echo $?

结果:

1

再重新执行一条正确的命令:

echo #SHELL

此时再输出$?变量:

0

三、自定义变量注意事项

1、定义变量(不能有空格):变量=值

2、撤销变量:unset 变量

3、声明静态变量(不能unset 静态变量):readonly 变量

静态变量一经初始化,值不能再被更改,变量不能被撤销。

bash: unset: i: cannot unset: readonly variable
bash: i: readonly variable

变量定义到当前的shell。每次重新登陆,即一个新的连接,都会有新的shell环境。存放在内存中,关闭连接,内存会被回收。

四、运算符

基本语法:

(1)" ( ( 运 算 式 ) ) " 或 者 " ((运算式))" 或者 " (())""[运算式]"

a=5;
b=5;
echo "$(($a+$b))";
echo "$[$a+$b]";

(2)expr +,-,*,/,%

注意:expr 运算符之间有空格

a=5;
b=5;
expr $a + $b

推荐使用第一种方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值