您的位置:首页 > 其它

文章标题

2017-09-26 08:39 330 查看

变量替换

变量的名字就是变量保持值的地方,引用变量的值就叫做变量替换。

- $var

- ${var}

- “$var”

- “${var}”

变量替换和引用的方式,其中在““中发生变量替换,叫部分引用,在‘ ‘中就不会发生变量替换,叫全引用。

注意:\$var 与\${var}的区别,不加{},在某些上下文将引起错误

#!/bin/bash
hello="A  B     C       D"
echo $hello            #A B C D
echo ${hello}         #A B C D
echo "$hello"        #A  B     C       D
echo "${hello}"     #A  B     C       D
# echo \$hello和 echo "$hello" 结果不同
# 引用一个变量将保留其中的空白,当然,如果是变量替换就不会保留了
echo '$hello'       #$hello
#全引用则是把$变成一个单独的字符


变量赋值

=

let

read方式

$(…)

` `

#!/bash
a=375
echo $a
b=$a
echo $b

#命令结果赋值
a=`echo $hello!`  #将echo 命令的结果传给变量a
echo $a
a=`ls -l`
echo "$a"   #保留a中的空格和换行

#let
let a=16+5
15 echo "The value of \"a\" is now $a."

# 在for循环中
echo -n "Values of \"a\" in the loop are: "
for a in 7 8 9 11
do
echo -n "$a "
done

echo
# 在 read 命令状态中
echo -n "Enter \"a\" "
read a
echo "The value of \"a\" is now $a."
echo

#$()
R=$(cat /ect/redhat-release)
arch=$(uname -m)
echo $R
echo $arch


变量是不分类型的

变量不区分类型,都是字符串。但是依赖于上下文,Bash 也允许比较操作和算术操作.决定这些的关键因素就是,变量中的值 是否只有数字。

特殊变量类型

local variables

这种变量只有在代码块或者是函数中才可见(具体见 23.2 和 23 章)

environmental variables

这种变量将改变用户接口和 shell 的行为

用户变量:每次当 shell 启动时,它都将创建自己的环境变量.更新或者添加新的环境变量,将导 致 shell 更新它的环境,同时也会影响所有继承自这个环境的所有子进程(由这个命令 导致的).

如果一个脚本设置了环境变量,需要 export 它,脚本只能对它产生的子进程 export 变量.一个从命令行被调用的脚本 export 的变量,将 不能影响调用这个脚本的那个命令行 shell 的环境.

positional parameters

就是从命令行中传进来的参数,$0, $1, $2, $3

$0 就是脚本文件的名字,$1 是第一个参数,$2 为第 2 个…,$9 以后就需要打括号了,如10,{11},${12}…

\$*和\$@

#!/bin/bash
#调用这个脚本需要10个参数,如 ./scriptname 1 2 3 4 5 6 7 8 9 10
MINPARAMS=10
echo "This name of scriptname is \"$0\"."
echo "This name of scriptname is \"`basename $0`\"."


{}标记法是一种很好的使用位置参数的方法.这也需要间接引用

1. args=$# 位置参数的个数

2. lastarg=${!args}

3. # 或: lastarg=${!#}

4. # 注意 lastarg=${!$#} 将报错

退出和退出状态

exit 通常成功返回0,非0 错误码

exit $? 一个脚本以不带参数 exit 来结束时,脚本的退出状态就由脚本中最后执行命令来决定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: