linux第十三天

高级变量


runner@liyongke:~$ echo $num
88
runner@liyongke:~$ r=${num-'99'}
runner@liyongke:~$ echo $num
88

r=${num-'99'},这个命令的作用是如果变量 num 为空或者未设置,那么就将变量 r 的值设置为 99,如果变量 num 有值,那么就将变量 r 的值设置为变量 num 的值。在你的例子中,变量 num 有值为 88,所以 r 的值也为 88

#!/usr/bin/env bash
name=${filename:-"testmesg.txt"}

cat > $name <<HERE

From:liyongke
To:zhang
Subject:测试一下

这是一封测试信,请勿回复!
HERE

cat > $name <<HERE:这里使用了重定向和 here document 的方式,将后续的内容写入到由变量 name 指定的文件中。

runner@liyongke:~$ echo $((${j:-8}*10))
80

  1. $(())是算术扩展,用于进行算术运算。在这里,将前面得到的值(如果j未设置则为8)乘以10
  2. 最后,echo命令输出结果,即80

runner@liyongke:~$ echo $((k+5))
5

  • 在求值时,如果算术式中变量不存在或空值,则该变量的值为0.

# 1.先使用,在运算
runner@liyongke:~$ m=10
runner@liyongke:~$ echo $((5+m++))
15

# 2.先运算,在使用
runner@liyongke:~$ n=12
runner@liyongke:~$ echo $((1+(++n)))
14
  • 在这个表达式中,m++ 是先使用 m 的当前值进行运算,然后再将 m 的值自增 1
  • 所以先计算 5 + 10 得到 15,然后 m 的值变为 11
  • 最终输出 15
  • n=12:将变量 n 赋值为 12
  • echo $((1+(++n)))
    • 这里的 ++n 是先将 n 的值自增 1,然后再使用自增后的 n 的值进行运算。
    • n 先变为 13,然后计算 1 + 13 得到 14
    • 最终输出 14

runner@liyongke:~$ m=8
runner@liyongke:~$ r=$((m<<1))
runner@liyongke:~$ echo $r
16

在 Bash 中,<< 是左移操作符。m<<1 表示将变量 m 的值(这里是 8)在二进制下向左移动一位。

8 的二进制表示为 1000,向左移动一位后变为 10000,也就是十进制的 16

所以,先将 m<<1 的结果赋值给变量 r,然后使用 echo $r 输出变量 r 的值,结果为 16

runner@liyongke:~$ i=100
runner@liyongke:~$ r=$((i>80?1:0))
runner@liyongke:~$ echo $r
1

这里的 i>80?1:0 是一个条件表达式。如果 i 的值大于 80,那么整个表达式的值为 1;如果 i 的值不大于 80,那么表达式的值为 0

首先,将 i 赋值为 100。由于 100 大于 80,所以条件表达式的结果为 1,并将这个结果赋值给变量 r。最后使用 echo $r 输出变量 r 的值,即 1

declare的用法

使用declare事先设定变量a的属性为“整数”

runner@liyongke:~$ declare -i a
runner@liyongke:~$ a=8+9
runner@liyongke:~$ echo $a
17

let的用法

let就是让变量重新赋值。

runner@liyongke:~$ m=12
runner@liyongke:~$ let m=20
runner@liyongke:~$ echo $m
20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值