-
- BASH中的算术运算表达式
定义变量:
Var=2
Var1=3
Var2=4
可用的写法:
1、Var=$[$Var1 + $Var2] 或 Var=$[$Var1 + 1]
2、Var=$[Var1 + Var2] 或 Var=$[Var1 + 1]
3、Var=$(($Var1 + $Var2)) 或 Var=$(($Var1 + 1))
4、Var=$((Var1 + Var2)) 或 Var=$((Var1 + 1))
5、let Var=$Var1+$Var2 或 let Var=$Var1+1
6、let Var=Var1+Var2 或 let Var=Var1+1
7、Var=`expr $Var1 + $Var2` 或 Var=`expr $Var1 + 1`
其中2与3等价,即:bash把"(())"连接到let命令上了,并且"(())"中的变量不用带美元符号"$".
set Count=1
set Var=1
或
@ Count=1
@ Var=1
可用的写法:
1、@ Count=$Count + $Var 或 @ Count=$Count + 1
2、@ Count++
3、@ Count ++
4、@ Count += 1
5、@ Count+=1
- Bash与Csh中数组的比较
数组必须是使用""或括起来的一系列用空格分隔的串,使用[]来引用数组元素.
如:
Users="User1 User2 User3 User4"
Fruits='Apple Orange Bananer Pear'
数组是使用()或""或括起来的一系列用空格分隔的串,使用[]来引用数组元素.
如:
set Users=(User1 User2 User3 User4)
set Number="Num1 Num2 Num3 Num4"
set Fruits='Apple Orange Bananer Pear'
- Bash与Csh中控制结构的比较
1、if结构,有以下几种:
(1): if [ Condition-Expression ]; then
-
Commands
-
fi
-
(2): if [ Condition-Expression ]; then (不要忘了then 前面有分号,csh没有)
-
Commands1
-
else
-
Commands2
-
fi
-
(3): if [ Condition-Expression1 ]; then
-
Commands1
-
elif [ Condition-Expression2 ]; then
-
Commands2
-
elif [ Condition-Expression3 ]; then
-
Commands3
-
else
-
Commands4
-
fi
-
(4): case 结构:
-
case $var in
-
value-list1)
-
Commands-1
-
;;
-
value-list2)
-
Commands-2
-
;;
-
value-list3)
-
Commands-3
-
;;
-
*)
-
Commands-N
-
;;
-
esac
2、循环结构,有以下几种:
(1): for 结构:
-
for var in Value-List
-
do
-
Commands
-
done
-
(2): while 结构:
-
while [ Condition-Expression ]
-
do
-
Commands
-
done
-
(3): until 结构:
-
until [ Condition-Expression ]
-
do
-
Commands
-
done
1、if结构,有以下几种: 注意,条件判断语句中的then关键字一定要与if/else if在同一行上,这点与bash不同.
(1): if(Condition-Expression) then
-
Commands
-
endif
-
(2): if(Condition-Expression) then
-
Commands1
-
else
-
Commnads2
-
endif
-
(3): if(Condition-Expression-1) then
-
Commands1
-
else if(Condition-Expression-2) then
-
Commands2
-
else if(Condition-Expression-3) then
-
Commands3
-
else
-
Commands4
-
endif
-
(4):switch结构:
-
switch($Var)
-
case value1:
-
Commands1
-
breaksw
-
case value2:
-
Commands2
-
breaksw
-
default:
-
Commands3
-
breaksw
-
endsw
2、循环结构,有一下几种:
(1):foreach 结构:
-
foreach var (Value-List)
-
Commands
-
end
-
(2): while 结构:
-
while(Condition-Expression)
-
Commands
-
end
- Bash与Csh中的变量
1、定义:直接使用"变量名=值"的格式来定义,不区分字符串与数字值,统统认为是一个串.
如: UserName=duane2、引用:在变量名前加上美元符号"$"即可引用该变量的值.
如: echo My name is $UserName3、命令行参数:$n,(n的取值范围为0---9)
$n: 表示第n个参数的值
$0: 当前shell脚本的程序名称
$*: 从n=1开始的所有命令行参数
- BASH中的算术运算表达式
- $#: 命令行参数的个数
- 4、从标准输入读取变量内容:
read Var -
echo $Var
- CSH中的变量
1、字符串类型变量的定义:
使用关键字set和"变量名=值"的格式定义,这种定义格式也可以用于数字值类型变量的定义.
- 如: set UserName=duane
- set Age=25
2、数字值类型变量的定义:
使用符号"@"来定义,"@"与变量名之间要有空格隔开.
- 如: @ Age=25
3、引用:在变量名前加上美元符号"$"即可引用该变量的值.
如: echo My name is $UserName,and age is $Age4、命令行参数$argv[n],(n的取值范围为0---9),可缩写为$n.
$argv[0]: 当前shell脚本的程序名称,可缩写为$0. - $argv: 从n=1开始的所有命令行参数,可缩写为$*.
- $#argv: 命令行参数的个数,可缩写为$#.
5、从标准输入读取变量内容:
set Var=$< - echo $Var
6、取消变量的定义:
unset Var -
- BASH中的条件表达式
Bash中测试条件表达式时可以使用test命令或"[]",test命令与"[]"的功能是等价的,bash把"[]"的实现连接到test命令 上的."[]"中的条件表达式与"["和"]"之间都必须有至少一个空格.如: [ 2==2 ],否则bash解释器不于通过执行.
文件比较运算符
[ -e filename ] 如果filename存在,则为真 [ -e /var/log/syslog ]
[ -d filename ] 如果filename为目录,则为真 [ -d /tmp/mydir ]
[ -f filename ] 如果filename为常规文件,则为真 [ -f /usr/bin/grep ]
[ -L filename ] 如果filename为符号链接,则为真 [ -L /usr/bin/grep ]
[ -r filename ] 如果filename可读,则为真 [ -r /var/log/syslog ]
[ -w filename ] 如果filename可写,则为真 [ -w /var/mytmp.txt ]
[ -x filename ] 如果filename可执行,则为真 [ -L /usr/bin/grep ]
[ filename1 -nt filename2 ] 如果filename1比filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
[ filename1 -ot filename2 ] 如果filename1比filename2旧,则为真 [ /boot/bzImage -ot arch/i386 ]
字符串比较运算符(请注意引号的使用,这是防止空格扰乱代码的好方法)[ -z string ] 如果string长度为零,则为真 [ -z "$myvar" ]
[ -n string ] 如果string长度非零,则为真 [ -n "$myvar" ]
[ string1 = string2 ] 如果string1与string2相同,则为真 [ "$myvar" = "one two three" ]
[ string1 != string2 ] 如果string1与string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符[ num1 -eq num2 ] 等于 [ 3 -eq $mynum ]
[ num1 -ne num2 ] 不等于 [ 3 -ne $mynum ]
[ num1 -lt num2 ] 小于 [ 3 -lt $mynum ]
[ num1 -le num2 ] 小于或等于 [ 3 -le $mynum ]
[ num1 -gt num2 ] 大于 [ 3 -gt $mynum ]
[ num1 -ge num2 ] 大于或等于 [ 3 -ge $mynum ]
字符串比较 功能
== 是否相等,若相等返回真
!= 是否不等,若不等返回真
=~ 字符串和模式进行测试是否相等(模式为任意正则表达式)
!~ 字符串和模式测试是否不等(模式为任意正则表达式)
文件测试 功能
-e 测试文件是否存在
-r 测试文件是否可读
-w 测试文件是否可写
-x 测试文件是否可执行
-d 测试文件名是否为目录
-f 测试文件是否为普通文件
-o 测试文件是否被用户所拥有
-z 测试文件是否为空
逻辑运算符 功能
&& 与运算,两个条件同时满足
|| 或运算,有一个条件满足
! 取反
注意:bash与csh都支持位运算
- CSH中的变量
bash 与 csh 区别
最新推荐文章于 2024-04-17 18:09:39 发布