Shell中小括号的用法

小括号():

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

2.得到命令输出——a=$(command), 等同于a=$`command`,得到命令输出传递给变量a

3.初始化数组——array=(a b c d),中间全部以空格为分隔符,很类似于数组.

第一条用法:

错误理解用法示例:

注意:想着括号可以执行多个命令,尝试()多个命令之间空格,加单引号等都没能成功,下面这样写也只执行了第一个命令.

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

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

正确用法:

测试脚本内容:

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

脚本执行的过程:

[[email protected] ~]# sh -x test.sh 
+ arry=cweb14
++ arry=cweb17#单开了一个子shell在运行.
++ echo cweb17
+ for i in ‘$(arry=‘\‘‘cweb17‘\‘‘;echo ${arry})‘
+ echo cweb14
cweb14
+ echo cweb17
cweb17

运行的结果:

[[email protected] ~]# sh test.sh 
cweb14
cweb17

第二条用法示例:

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

注释:用for循环列出了数组中元素的值.变量arry获取值后已经是数组.

运行结果:

[[email protected] ~]# sh test.sh 
bin
etc
games
include
lib
lib64
libexec
sbin
share
src

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

第二条的另一种用法:

mysql命令输出2个值.

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

脚本循环变量的值.

[[email protected] ~]# 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

注释:$()意思 ()中执行命令,$()获取命令值,然后外面再()就是初始化$()的值.

[[email protected] ~]# sh test.sh 
No
No
Yes

第三条用法:

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

注释:小括号中数组的元素可以是变量不影响,初始化数组.

运行结果:

[[email protected] ~]# sh test.sh 
1
2
3
4
6
时间: 2024-10-28 14:30:00

Shell中小括号的用法的相关文章

Shell里面括号的用法

中括号 中括号分为单中括号[],和双中括号[[]],中括号一般用于表达式判断中,小括号也可以用于表达式,这个后面提到. 单中括号[] A=5 B=3 [ $A -eq $B ]    判断A是否等于B [ ${A} -eq ${B} ]  作用同上 [ "${A}" -eq "${B}" ]  作用同上 A=ABC [ $A == "ABC" ]   或写成  [ ${A} == "ABC" ]   或写成  [ "

shell中括号的特殊用法

shell中括号的特殊用法 Shell中的括号有其特殊的用法, 现总结如下:1. 符号$后的括号${a} 变量a的值, 在不引起歧义的情况下可以省略大括号.$(cmd) 命令替换, 结果为shell命令cmd的输出, 和`cmd`效果相同, 不过某些Shell版本不支持$()形式的命令替换, 如tcsh.$((exp)) 和`expr exp`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算. a=1;b=2echo $[

SHELL STUDY....tr的用法

一般我们使用tr来做字符串的替换,或者删除指定的字符串 tr的语法如下: tr [OPTION]... SET1 [SET2] -c, -C, --complement first complement SET1 将非SET1中的字符替换为SET2 [[email protected] ~]$ echo "lubinsu" | tr -c "l" "A" lAAAAAAA -d, --delete delete characters in SET

20140527-ASP.NET中尖括号百分号用法

1.<%=%> 里面放的变量名,如:<div><h1>Hello World</h1><p>Welcome to Beginning ASP.NET 3.5 on <%=DateTime.Now.ToString() %></p></div>输出结果为:Hello WorldWelcome to Beginning ASP.NET 3.5 on 2009-11-10 15:53:08 2. <%#%>

shell变量的特殊用法

转载:http://blog.csdn.net/shmilyringpull/article/details/7631106 假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt${file#*.}:删掉第一个 .  及其左边的字符

linux shell &ldquo;(())&rdquo; 双括号运算符使用

linux shell "(())" 双括号运算符使用 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展.   使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表

shell expect的简单用法【转】

用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下:  ##############################################  #!/usr/bin/expect  set timeout 30  spawn ssh -l username 192.168.1.1  expect "password:"  send "ispa

&nbsp; shell中的select用法

select也是循环的一种,它比较适合用在用户选择的情况下.比如,我们有一个这样的需求,运行脚本后,让用户去选择数字,选择1,会运行w命令,选择2运行top命令,选择3运行free命令,选择4退出.脚本这样实现: #!/bin/bash echo "Please chose a number, 1: run w, 2: run top, 3: run free, 4: quit" echo select command in w top free quit do case $comma

(转)Shell中read的用法详解

Shell中read的用法详解 原文:http://blog.csdn.net/jerry_1126/article/details/77406500 read的常用用法如下: read -[pstnd] var1 var2 ... -p 提示语句-n 字符个数-s 屏蔽回显-t 等待时间-d 输入分界 [plain] view plain copy 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY [email prote