shell 脚本declare声明变量

linux bash shell之declare

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

declare/typeset 选项linux

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

  • 运行结果以下,可见声明后再也没法修改。
    shell

  • [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
    bash

    • 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声明的是一个局部变量,因此函数调用完了就没了。spa

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

code

相关文章
相关标签/搜索