初学者在写 shell 脚本时候总会被 shell 中各种类型的扩和以及哪里应该加空格哪里不应该加空格弄得神魂颠倒,晕头转向,本篇主要是总计一下 shell 中各种类型的括号该怎么使用
() 小括号
我常使用的有初始化数组
#!/bin/bash
array=(1 2 3 4)
还有诸如命令组,命令替换用到
(()) 双小括号
(())
在执行计算公式时与[]
是等价的
双小括号中的的变量可以不用 $ 前缀,括号内也支持多个表达式用逗号隔开,只要括号内的运算符合 c 语言运算,都可以写在 $(()) 双小括号中
#!/bin/bash
echo $((1+1))
# 下面的例子 a 重新被赋值成 2 了
a=1
echo $((a++))
echo $a
# 下面的例子是一个 for 循环
for((i=0;i<2;i++))
do
echo "Hello World!"
done
[] 中括号
在执行计算公式时[]
与(())
是等价的
[]
与 linux 中 test 命令同,其中可进行算数比较运算,还有数组中下标被中括号括起来
#!/bin/bash
# 这里不用加空格
echo $[1>=2]
# if 这里需要加上空格,因为 if 后是要接一个 test 命令的,[ 正好可以表示检测真假的命令
if [ 1 -eq 1 ]
then
echo "a"
else
echo "b"
fi
[[]] 双中括号
[
是 bash 命令中的一个关键字,但是[[
可不是,他只是 bash 程序设计语言中的一个关键字,条件判断时候双括号可以替代单括号,而且双括号由于其中不是命令的形式,其中无 -eq 等语句,直接都是运算符号,如下
#!/bin/bash
if [[ 1 >= 0 ]]
then
echo "a"
else
echo "b"
fi
{} 大括号
大括号常与$
连用,对变量的使用。还有用于文件列表的扩展和代码块
#!/bin/bash
a="Hello World!"
echo ${a}
$ 美元符
可以对变量进行使用
#!/bin/bash
a="Hello World!"
echo ${a}
`` 表达式符
主要作用是命令的替换,如下 seq 是一个 linux 命令的关键字,用于输出以个序列
#!/bin/bash
echo `seq 1 3`