首页 > 系统服务 > 详细

shell 脚本declare声明变量

时间:2015-08-09 11:00:36      阅读:241      评论:0      收藏:0      [点我收藏+]

linux bash shell之declare

declaretypeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式。命令declare是bash版本2之后才有的。命令typeset也可以在ksh脚本中运行

declare/typeset 选项

-r 只读
#!/bin/bash
declare -r haha=leaf
echo $haha
haha=what
echo what is $haha ?

  • 运行结果如下,可见声明后再也无法修改。

  • [root@mfsbackup mnt]# ./declare2.sh
    leaf
    ./declare2.sh: line 11: haha: readonly variable
    what is leaf ?

    -i 整形

  • #!/bin/bash
    declare -i num
    num=1
    echo num="$num"
    num=2
    echo num="$num"
    num=three
    echo num="$num"
    num=1
    num=$num+1
    echo num="$num"
  • [root@mfsbackup mnt]# ./declare3.sh
    num=1
    num=2
    num=0
    num=2



  • #!/bin/bash
    n=10/5
    echo n=$n
    typeset -i n //和declare一个效果
    echo n=$n //注意这里的输出
    n=10/5
    echo n=$n

  • [root@mfsbackup mnt]# ./declare4.sh

    • n=10/5
      n=10/5 //注意这里的输出,可以看出对前面已经声明过的变量还是那个变量,declare的时候需要再次声明。
      n=2


  • #!/bin/bash
    foo()
    {
    declare FOO="bar"
    echo "now FOO=$FOO"
    return 20
    }
    bar()
    {
    foo
    if [ $? -eq 20 ];then
    echo "$FOO"
    else
        echo nono
    fi
    }    
    bar


    [root@mfsbackup mnt]# ./declare1.sh
    now FOO=bar
    

 上面可以看出declare声明的是一个局部变量,所以函数调用完了就没了。

-f 显示之前的所有函数    跟上函数名指定显示某个函数
  7 #!/bin/bash
  8 foo()
  9 {
 10 declare FOO="bar"
 11 echo "now FOO=$FOO"
 12 return 20
 13 }
 14 bar()
 15 {
 16 foo
 17 if [ $? -eq 20 ];then
 18 echo "$FOO"
 19 else
 20     echo nono
 21 fi
 22 }
 23 bar
 24 declare -f
 25 declare -f foo

[root@mfsbackup mnt]# ./declare1.sh
now FOO=bar

bar ()
{
    foo;
    if [ $? -eq 20 ]; then
        echo "$FOO";
    else
        echo nono;
    fi
}
foo ()
{
    declare FOO="bar";
    echo "now FOO=$FOO";
    return 20
} //     declare -f 结果
foo ()   
{
    declare FOO="bar";
    echo "now FOO=$FOO";
    return 20
//declare -f foo结果





shell 脚本declare声明变量

原文:http://my.oschina.net/loveleaf/blog/489692

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!