码迷,mamicode.com
首页 > 系统相关 > 详细

shell中的变量功能

时间:2015-08-27 15:37:07      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

本地变量

    set VARNAME=VALUE:作用域为整个bash进程

局部变量

    local VARNAME=VALUE:作用域为当前代码段

环境变量

    export VARNAME=VALUE

或者    VARNAME=VALUE                      export VARNAME

位置变量

$1   $2    ......

特殊变量

$? :上一条命令的执行状态返回值

程序执行,可能有两类返回值:1.程序执行结果,2程序状态返回代码(0-255),其中0是正确执行,1-255:错误执行,1,2,127系统预留。

常用的系统命令:

  1. 撤销变量:unset VARNAME

  2. 查看当前shell中的变量 :set查看所有变量(含环境变量和自定义变量)

  3. 查看当前shell的环境变量:printenv env export

变量的键盘读取和数组与声明:

read: -p 后面可接提示符

declare -[aixr]  variable

a:将后面名为 variable的变量定义为数组类型

i:将后面名为variable的变量定义为整数类型

x:将后面名为variable的变量定义为环境变量

r:将变量设置为readonly变量

 #!/bin/bash
###
##算奇数和偶数的和
VAR=100
EVEN=0
ODD=0
declare -i I=0
while [ $I -le $VAR ]
do
        if [ $(($I%2)) -eq 0 ];then
                EVEN=$(($EVEN+$I))
        else
                ODD=$(($ODD+$I))
        fi 
        I=$(($I+1))
done
echo "the odd number is : $ODD"
echo "the even number is : $EVEN"

由于在shell中,字符串比较容易处理,但是对于数值的计算确不太容易写。简单记一下

对于数值处理,直接用var=$((运算内容))

对于数组的取值${数组变量}

 下面是一个简单的编写图形的脚本:

#!/bin/bash
#绘制特殊图形
I=0
J=0
NUM=11
while [ $I -le $NUM ];
do
        if [ $I -lt $((NUM/2)) ];then
                TMP=$(($NUM/2))
                for (( t=0;t<$[$TMP-$I];t=t+1 ))
                do
                        echo -n " "
                done
                for (( k=0;k<$I;k=k+1 ))
                do
                        echo -n "* "
                done
                echo
        else
                for (( t=0;t<$[$I-$TMP];t=t+1 ))
                do
                        echo -n " "
                done
                for (( k=0;k<$[2*$TMP-$I];k=k+1 ))
                do
                        echo -n "* "
                done
                echo
        fi
        let "I+=1"
done

 

循环结构

1.while [condition]

  do

  done

2.until [condition]

  do

  done

 

3.for var in con1 con2 con3

do

done

4.for (( 初始值;限制值;执行步长 ))

do

done

#!/bin/bash
function test1() {
        echo "第一种方式进行循环"
        local I=0
        local SUM=0
        while [ $I -le 100 ];
        do
                SUM=$[$SUM+$I]
                let "I++"
        done
        echo "SUM的值为:"$SUM
}
function test2() {
        echo "第二种方式进行循环"
        local I=0
        local SUM=0
        until [ $I -le 100 ];
        do
                SUM=$(($SUM+$I))
                I=$[$I+1]
        done
        echo "SUM的值为:"$SUM
}
function test3(){
        echo "第三种循环方式"
        local I=0
        local SUM=0
        for I in `seq 1 100`
        do 
                SUM=$(($SUM+$I))
        done
        echo "SUM的值为$SUM"

}
function test4(){
        echo "第四种循环方式"
        local I=0
        local SUM=0
        for (( I=0;I<=100;I++ ))
        do 
                SUM=$[$SUM+$I]
        done
        echo "SUM的值为:"$SUM
}
test1
test2
test3
test4

 


 

shell中的变量功能

标签:

原文地址:http://my.oschina.net/alfredliukai/blog/497909

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!