好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

bash中的空格 - Windows操作系统 - 自学php

先来看一下 空格在bash中的使用规则:

1.赋值运算时=号两边不能使用空格。

2.命令与选项之间需要空格。

3.管道两边的空格可有可无。

再来看一下各种由于空格导致错误的原因:

1)赋值运算时=号左边有空格

var ="abc"
产生的错误信息为:

var: command not found

这是由于bash在解释该条命令时,var会作为一个命令去在 系统 的PATH中去寻找。一旦无法找到var这个命令就回提示[找不到var这个命令],那么后面的语句自然也无法执行。

2)赋值运算时=号右边有空格

var= "abc"

产生的错误信息为:

abc: command not found

这是因为在bash中有这么一条执行命令的方式:var=string command

命令command将得到变量var的值,那么[abc"则会作为一个command被bash解释,那么返回的信息当然是[找不到abc这个命令]。

3)赋值运算时=号左右都有空格。

这种情况与第一种情况相同。

4)命令之间没有使用空格。

常见的有如下几种情况:

【if与[之间没有空格】

if[ -n "abc" ];then echo ok;fi

错误原因:很多人认为[ ]在bash中只是一个判断布尔值的符号。其实[ ]在bash中的作用等同于test,它当然是一个命令。

那么if 是一个独立的命令,[ ]同样也是一个独立的命令。两个命令直接当然要有空格,否则像 if[这样的情况,bash只能理解为是一个整体,因而报错。

【[xxx]其中的参数的两端没有空格】

if ["abc" = "abc" ];then echo ok;fi

错误原因:同样的 bash根本无法理解["abc"是个什么东西。要牢记 [ ]不仅仅是一个符号,而是一个命令。

【[ "abc"="cba" ]其中的参数之间没有空格】

if [ "abc"="abc" ];then echo ok;fi

错误原因:

=两边有空格,是表达式,判断=两边的值是否相等,返回一个bool值.

=两边缺少空格,bash则会将"abc"="cba"看做一个整体,它始终返回为真。

至于管道,虽然|两边空格可有可无,但为了美观,一般还是保留两边的空格的。

查看更多关于bash中的空格 - Windows操作系统 - 自学php的详细内容...

  阅读:62次