标签:
本地变量:
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系统预留。
常用的系统命令:
撤销变量:unset VARNAME
查看当前shell中的变量 :set查看所有变量(含环境变量和自定义变量)
查看当前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
标签:
原文地址:http://my.oschina.net/alfredliukai/blog/497909