shell 中的各种括号



一、双圆括号,即((...))

作用1:使变量执行算术运算

#!/bin/bash

a=10
b=20

c=$((a*b))
echo "c=$c"

[root@nn ~]# ./test.sh 
c=200


作用2:使bash shell 实现C语言风格的变量操作,包含5种

1.首先是C语言风格的赋值,C语言允许赋值号两端存在空格,但是在shell中是不允许的    ((a = 2000))

2.其次,变量 可以使用C语言中的自增、自减   ((a++))  ((a--))  ((++a))

3.可以用于for,while,if中的条件测试

4.支持多个表达式运算,各个表达式之间用“,”分开

5.可以进行四则运算和逻辑运算

二、单圆括号 (...)

作用1:强制将()中的命令运行在子shell中

(

command 1

command 2

....

)

括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。


[root@nn shell]# cat subsvar.sh 
#!/bin/bash 

echo "The level of father shell is : $BASH_SUBSHELL"
outervar=OUTER 

(#进入子shell
echo "The level of son shell is :$BASH_SUBSHELL"
innervar=INNER 
echo "innervar=$innervar"
echo "outervar=$outervar"

)

#回到父shell
echo "The level of father shell is : $BASH_SUBSHELL"
if [ -z "$innervar" ]
then
    echo "The \$innervar is not defined in main body"
else
    echo "The \$innervar is defined in main body"
fi

运行结果: [root@nn shell]# ./subsvar.sh 
The level of father shell is : 0
The level of son shell is :1
innervar=INNER
outervar=OUTER
The level of father shell is : 0
The $innervar is not defined in main body



作用2:命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh

a=$(ls /root)      等价于       a=`ls /root`     #一定要找个变量接一下 ,它与直接执行 ls /root 不一样;$() 与`` 都是将结果保存起来
echo $a


作用3:用于初始化数组   如:array=(a b c d)


#!/bin/bash 

city=(nanjing beijing jinan zibo linyi)

echo "city[0]=${city[0]}"
echo "city[1]=${city[1]}"
echo "city[2]=${city[2]}"
echo "city[3]=${city[3]}"
echo "city[4]=${city[4]}"
echo "city[5]=${city[5]}"
 ~                                                                                                                                                                       
~                                                                                                                                                                       
~                                                                                                                                                                       
~                                                                                                                                                                       
运行结果:~    
[root@nn shell]# chmod +x arry1.sh 
[root@nn shell]# ./arry1.sh 
city[0]=nanjing
city[1]=beijing
city[2]=jinan
city[3]=zibo
city[4]=linyi
city[5]=

#!/bin/bash 

city=(nanjing [3]=beijing jinan zibo linyi)   //()可以给任意一个元素随机赋值

echo "city[0]=${city[0]}"
echo "city[1]=${city[1]}"
echo "city[2]=${city[2]}"
echo "city[3]=${city[3]}"
echo "city[4]=${city[4]}"
echo "city[5]=${city[5]}"
~
运行结果:                                                                                                                                                                       
~[root@nn shell]# ./arry1.sh 
city[0]=nanjing
city[1]=
city[2]=
city[3]=beijing
city[4]=jinan
city[5]=zibo

                                                                                                                                                                       
~              


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值