文章标题

来源:互联网 发布:西门子usb编程电缆 编辑:程序博客网 时间:2024/06/09 19:55

变量替换

变量的名字就是变量保持值的地方,引用变量的值就叫做变量替换。
- $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方式
  • $(…)
  • ` `
#!/basha=375echo $a   b=$aecho $b#命令结果赋值a=`echo $hello!`  #将echo 命令的结果传给变量aecho $aa=`ls -l`echo "$a"   #保留a中的空格和换行#letlet a=16+515 echo "The value of \"a\" is now $a."# 在for循环中echo -n "Values of \"a\" in the loop are: "for a in 7 8 9 11doecho -n "$a "doneecho# 在 read 命令状态中echo -n "Enter \"a\" "read aecho "The value of \"a\" is now $a."echo #$()R=$(cat /ect/redhat-release)arch=$(uname -m)echo $Recho $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 10MINPARAMS=10echo "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 来结束时,脚本的退出状态就由脚本中最后执行命令来决定
原创粉丝点击