shell中的各种括号
一、圆括号()、(())
1.单圆括号 ()
(1)命令替换:$(cmd)
KaTeX parse error: Can't use function '\`' in math mode at position 8: (cmd))和\̲`̲cmd\`一样,用于命令替换,…(cmd)并非如此
a=`pwd`
echo $a
上面代码用$()可写成
a=$(pwd)
echo $a
上面代码输出当前路径
/home/j
(2)新开子shell执行命令:(cmd1;cmd2;cmd3;…)
相当于新开一个子shell去执行括号中的命令,命令会顺序执行,由于是子shell,括号中的变量b不被脚本余下的部分使用
(pwd;uname;who)
上面代码输出
/home/j
Linux
j tty1 2019-10-30 15:26 (:0)
(3)初始化数组:array_name=(value1 vaule2 …)
array=(a b c)
echo ${array[0]}
上面代码输出
a
2.双圆括号 (())
(1)增强表达式
二、方括号[]、[[]]
1.单方括号 []
(1)相当于test:if [ exp ]
例如有以下代码
a=3
b=4
if test $a -eq $b
then
echo "两数相等"
else
echo "两数不等"
fi
可以写下面的形式
a=3
b=4
if [ $a -eq $b ]
then
echo "两数相等"
else
echo "两数不等"
fi
注:方括号与表达式之间隔着空格
上面代码都是输出
两数不等
(2)进行整数运算:$[]
和 ( ( ) ) 一 样 , (())一样, (())一样,[]用作数据运算,但是在bash中只能进行整数运算
a=1
b=2
c=$(($a+$b))
echo $c
注: ( ( ) ) 内 变 量 可 不 用 (())内变量可不用 (())内变量可不用,写成c=$((a+b))
上面代码可以写成
a=1
b=2
c=$[$a+$b]
echo $c
注:同样的,$[]内的变量可不用$,写成c=[a+b]
上面代码都是输出
3
(3)索引数组:array_name[]
array=(a b c)
echo ${array[0]}
上面代码输出
a