第一篇
- 定义变量时,
=
号的两边不可以留空格 - 条件测试语句
[
符号的两边都要留空格 - 条件测试的内容,如果是字符串比较的话,比较符号两边要留空格
- 如果if 和 then写在同一行,那么, then的前面要跟上
;
号;如果 then 换行写,,那么也没问题
第二篇
- 等号赋值两边不能有空格
- 命令与选项之间需要空格
- 管道两边空格可有可无
常见的问题**
赋值时等号两边或者只有左边多了空格
# bash: var1: command not found
var1 = test
# bash: var1: command not found
var1 =test
赋值时左边没有空格,右边有空格
var= test
# # bash: nocmd: command not found
var = nocmd
第二条命令报错,因为shell中有一种执行命令的方式:var=string command
。command
将得到变量var
的值。
var=newtest eval echo $var
错误的示范(在echo还没执行时,$var
已经被替换成空字符串):
var=newtest echo $var
命令和选项之间必须有空格
[
命令,也就是test
命令
if [ "abc" = "abc" ]; then echo ‘they are the same'; fi
type -a [
[
命令经常用到if
判断中,也可以这么写
[ "abc" = "cba" ] || echo ‘they are not the same'
用[
命令时,你必须给它个尾巴]
, 用test
命令时,就不能加个尾巴。尾巴]
是[
命令的最后一个参数, 代表[
命令的结束。
[
在shell中是个命令,它左右必须有空格,]
是[
的最后不可缺少的参数,它两边也需要空格。