一、shell中的算术表达式
1. expr expression
x=1
x=$(expr $x + 1) 或者 x=`expr $x + 1`
注意: $x + 1之间有空格
2. let expression
x=1
let x=$x+1 或者 let x+=1
注意:$x+1之间没有空格,x+=1之间没有空格, let没有返回值
3. ((expression)) 和 $((expression))
((expression)) 用法:
x=10
((x+=1)) 其方法与let类似
$((expression))用法:
x=10
y=$(($x+1))
y=$((x+=1))
注意:两者的差别:(())没有返回值,$(())有返回值
4. 使用$[]格式
x=10
$[ $x+1 ]
y=$[ x = $x + 1 ]
y=$[ $x+1 ]
注意:注意空格的使用
5. 使用declare
declare -n i
i=$i+1
echo $i
二、declare/typeset用法(声明shell变量) shell数组和declare用法
declare -p[]
declare -a var 数组变量
shell内部变量:shell 本身来执行,不能被外部程序调用,不创建子Shell。
shell外部变量:由fork出来的子shell 执行,创建子Shell
查看shell内部变量:man builtin 或 compgen -b
子shell:
shell变量包括两种变量
1.本shell私有的变量:通过赋值语句定义好的变量,可以通过如下方法定义shell变量
x="1234"
delcare y="2345"
2.用户的环境变量:通过export语法导出的shell私有变量,可以通过如下方法导出用户环境变量
A1="1234"
export A1 #先定义再导出
export A3="34"
导出成的用户环境变量可以在所有的shell中看到
env显示用户的环境变量;
set 显示当前shell的定义的私有变量,包括用户的环境变量,按变量名称排序;
export 显示当前导出成用户变量的shell变量,并显示变量的属性(是否只读),按变量名称排序;
declare 同set 一样,显示当前shell的定义的变量,包括用户的环境变量
3.while 循环
#! /bin/bash
i=1
while (($i<5))
#while [[ $i<5 ]]
#while [ $i -lt 5 ]
do
echo $i
let "i+=1"
# i=$i+1
# ((i++))
# let i+=1
# i=$[$i+1]
#
done
#! /bin/bash
for((i=1;i<=10;i++))
do
echo "i=$i"
done
4.for 循环
for XX in $(seq 1 5)|`seq 1 5`|1 2 3 4
转载于:https://blog.51cto.com/huanghualiang/1217398