shell 中的各种括号

来源:互联网 发布:应力分析软件 编辑:程序博客网 时间:2024/05/09 02:45



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

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

#!/bin/basha=10b=20c=$((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 (#进入子shellecho "The level of son shell is :$BASH_SUBSHELL"innervar=INNER echo "innervar=$innervar"echo "outervar=$outervar")#回到父shellecho "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 : 0The level of son shell is :1innervar=INNERoutervar=OUTERThe level of father shell is : 0The $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]=nanjingcity[1]=beijingcity[2]=jinancity[3]=zibocity[4]=linyicity[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]=nanjingcity[1]=city[2]=city[3]=beijingcity[4]=jinancity[5]=zibo                                                                                                                                                                       ~              


0 0
原创粉丝点击