Shell中小括號的用法
阿新 • • 發佈:2017-11-10
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中小括號的用法