第五节 变量类型和使用

一.Shell变量的种类

  • 概念:变量的名字就是变量保存值的地方。引用变量的值就叫做变量替换。
    如果 variable 是一个变量的名字,那么 $variable 就是引用这变量的值,即这变量所包含的数据。
    \$variable 事实上只是 \${variable} 的简写形式。在某些上下文中 \$variable 可能会引起错误,这时候你就需要用 \${variable} 了。
  • 用户自定义变量:由用户自己定义、修改和使用
  • 预定义变量:Bash预定义的特殊变量,不能直接修改
  • 位置变量:通过命令行给程序传递执行参数

二.自定义变量

  • 定义新的变量
    • 变量名要以英文字母或下划线开头,区分大小写
    • 格式:变量名=变量值
  • 查看变量的值
    • 格式:echo $变量名
  • 从键盘输入内容为变量赋值
    • 格式:read [-p “信息”] 变量名
  • 结合不同的引号为变量赋值
    • 双引号 ” “:允许通过$符号引用其他变量值
    • 单引号 ’ ’ :禁止引用其他变量值,$视为普通字符
    • 反引号 :将命令执行的结果输出给变量
  • 清除用户定义的变量
    • 格式:unset 变量名
#!/bin/bash

# 变量赋值和替换

a=375
hello=$a

#-------------------------------------------------------------------------
# 强烈注意, 在赋值的的时候, 等号前后一定不要有空格.
# 如果出现空格会怎么样?

#  "VARIABLE =value"
#                   ^
#% 脚本将尝试运行一个"VARIABLE"的命令, 带着一个"=value"参数.

#  "VARIABLE= value"
#                      ^
#% 脚本将尝试运行一个"value"的命令, 
#+ 并且带着一个被赋值成""的环境变量"VARIABLE". 
#-------------------------------------------------------------------------

echo hello    # 没有变量引用, 只是个hello字符串.

echo $hello
echo ${hello}

echo "$hello"
echo "${hello}"

echo

hello="A B  C     D"
echo $hello   # A B C D
echo "$hello" # A B  C     D
# 引用一个变量将保留其中的空白, 当然如果是变量替换就不会保留了.
# 在bash中,当变量中有空格、tab之类的字符时候,
# 如果需要打印这些字符,需要用双引号进行引用 "$hello".

echo

echo '$hello'  # $hello
#     ^           ^
# 全引用(单引号)的作用将会导致"$"被解释为单独的字符, 而不是变量前缀. 
# 使用单引号引用变量时候,变量的值不会被引用,只是简单的保持原始字符串.

# 注意这两种引用所产生的不同的效果.

hello=    # 设置为空值.
echo "\$hello (null value) = $hello"
#  注意设置一个变量为null, 与unset这个变量, 并不是一回事
#+ 虽然最终的结果相同(具体见下边).

# --------------------------------------------------------------

#  可以在同一行上设置多个变量, 
#+ 但是必须以空白进行分隔.
#  慎用, 这么做会降低可读性, 并且不可移植.

var1=21  var2=22  var3=$V3
echo
echo "var1=$var1   var2=$var2   var3=$var3"

# 在老版本的"sh"上可能会引起问题.

# --------------------------------------------------------------

echo; echo

numbers="one two three"
#                      ^    ^
other_numbers="1 2 3"
#                           ^ ^
#  如果在变量中存在空白,那么就必须加上引号
#  other_numbers=1 2 3                  # 将给出一个错误消息. 
echo "numbers = $numbers"
echo "other_numbers = $other_numbers"   # other_numbers = 1 2 3
#  不过也可以采用将空白转义的方法.
mixed_bag=2\ ---\ Whatever
#                     ^    ^ 在转义符后边的空格(\).

echo "$mixed_bag"         # 2 --- Whatever

echo; echo

echo "uninitialized_variable = $uninitialized_variable"
# Uninitialized变量为null(就是没有值). 
uninitialized_variable=   #  声明, 但是没有初始化这个变量, 
                         #+ 其实和前边设置为空值的作用是一样的. 
echo "uninitialized_variable = $uninitialized_variable"
                         # 还是一个空值.

uninitialized_variable=23       # 赋值.
unset uninitialized_variable    # Unset这个变量.
echo "uninitialized_variable = $uninitialized_variable" # 还是一个空值.

三.位置变量

  • 表示为$n,n为1-9之间的数字

微信截图_20161028085148.png

四.预定义变量

  • 表示形式:
    • $#:命令行中位置参数的个数
    • $*:所有位置参数的内容
    • $?:上一条明了执行后返回的状态,当返回状态值为0时表示执行成功,非0值表示执行异常或错误
    • $0:当前执行的进程/程序名

五.数值变量的运算

  • 计算整数表达式的运算结果
    • 格式:expr 变量1 运算符 变量2 …[运算符 变量n]
  • expr的常用运算符
    • 加法运算: +
    • 减法运算: -
    • 乘法运算: *
    • 除法运算: /
    • 求模(取余)运算:%
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值