1. 程式人生 > >Shell中小括號的用法

Shell中小括號的用法

shell中小括號的用法



小括號():

1.括號中的命令將會新開一個子shell順序執行,所以括號中的變量不能夠被腳本余下的部分使用。括號中多個命令之間用分號隔開,最後一個命令可以沒有分號,各命令和括號之間不必有空格.

2.得到命令輸出——a=$(command), 等同於a=$`command`,得到命令輸出傳遞給變量a

3.初始化數組——array=(a b c d),中間全部以空格為分隔符,很類似於數組.


第一條用法:

錯誤理解用法示例:

註意:想著括號可以執行多個命令,嘗試()多個命令之間空格,加單引號等都沒能成功,下面這樣寫也只執行了第一個命令.

[root@sh-proxy2 ~]# cat test.sh 
#!/bin/bash
arry=$(ls /usr/local/;ls /tmp)
for i in ${arry[@]}
do
    echo $i
done


[root@sh-proxy2 ~]# ls /usr/local/ | wc -l
10
[root@sh-proxy2 ~]# sh test.sh | wc -l
10


---------------------------------------------------------------------------------

正確用法:

測試腳本內容:

[root@sh-proxy2 ~]# cat test.sh 
#!/bin/bash
arry=cweb14
for i in $(arry=‘cweb17‘;echo ${arry})
do
    echo $arry
    echo $i
done


腳本執行的過程:

[root@sh-proxy2 ~]# sh -x test.sh 
+ arry=cweb14
++ arry=cweb17#單開了一個子shell在運行.
++ echo cweb17
+ for i in ‘$(arry=‘\‘‘cweb17‘\‘‘;echo ${arry})‘
+ echo cweb14
cweb14
+ echo cweb17
cweb17


運行的結果:

[root@sh-proxy2 ~]# sh test.sh 
cweb14
cweb17


第二條用法示例:

[root@puppet ~]# ls /usr/local/
bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@puppet ~]# cat test.sh 
#!/bin/bash
a=6
arry=$(ls /usr/local)#小括號中執行的是shell命令.
for i in ${arry[@]}
do
    echo $i
done


註釋:用for循環列出了數組中元素的值.變量arry獲取值後已經是數組.


運行結果:

[root@puppet ~]# sh test.sh 
bin
etc
games
include
lib
lib64
libexec
sbin
share
src

------------------------------------------------------------------------------

第二條的另一種用法:


mysql命令輸出2個值.

[root@sh-proxy2 ~]# mysql -e "show slave status\G"|grep -E "Slave_IO_Running|Slave_SQL_Running:"|awk ‘{print $2}‘
No
Yes


腳本循環變量的值.

[root@sh-proxy2 ~]# cat test.sh 
#!/bin/bash
arry=($(mysql -e "show slave status\G"|grep -E "Slave_IO_Running|Slave_SQL_Running:"|awk ‘{print $2}‘))
echo $arry
for i in ${arry[@]}
do
    echo $i
done


註釋:$()意思 ()中執行命令,$()獲取命令值,然後外面再()就是初始化$()的值.


[root@sh-proxy2 ~]# sh test.sh 
No
No
Yes


第三條用法:

[root@puppet ~]# cat test.sh 
#!/bin/bash
a=6
arry=(1 2 3 4 $a)
for i in ${arry[@]}
do
echo $i
done


註釋:小括號中數組的元素可以是變量不影響,初始化數組.

運行結果:

[root@puppet ~]# sh test.sh 
1
2
3
4
6




本文出自 “青衫解衣” 博客,請務必保留此出處http://215687833.blog.51cto.com/6724358/1980639

Shell中小括號的用法