shell 脚本declare声明变量

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结果





转载于:https://my.oschina.net/loveleaf/blog/489692

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值