打印 | Print.wpf_wrapperBy WEN Pingbo ofTinyLab.org2015/06/10对于大部分 BASH 初学者而言,在动手写脚本时,遇到最频繁的错误,我想,大概就是这样:#!/bin/bash
msg = "hello world" # msg: command not found
echo "My message: $msg"在刚接触 BASH 时,我也在这个地方纠结了很久,为什么=前后不能有空格?但 google 了半天,几乎所有的人都只是说,这种写法是 BASH 固有的语法,而没有更深一层去追究这个问题。这里,这篇文章尝试从 BASH 的词法设计上去追寻这个问题的本质。more在我们所熟悉的语言 ( c / c++ ) 中,=通常是一个操作符,而空格只是作为一个字分隔符。当一个表达式中出现操作符时,其本身也起到了分隔符的作用。这个时候操作符前后的空格就显的可有可无。这也是为什么int i = 1;和int i=1;都是正确的写法。但在 BASH 中,=却不是操作符。在bash manual definitions部分,定义的操作符只有如下几种:||, &&, &, ;, ;;, |, |&, (, ), newline, redirection operator由于=并不是操作符,那么如果一个赋值语句中出现空格,那么 BASH 解析时,
...
继续阅读
(36)