Shell-注释和变量

注释

shell中单行注释以#开头.

多行注释则如下:

#!/bin/bash
var=1

<<COMMENT
this is comment.
this is comment.
this is comment.
COMMENT

其中<<COMMENT的意思是重定向该行以下内容,直到在再次遇到以COMMENT为内容的新行,其中COMMENT可以替换为任意字符串.

多行注释,并不推荐使用.

关键字与变量

shell变量分为3种:
1. 预定义变量
2. 预环境变量
3. 自定义变量

预定义变量

预定义变量常用来获取命令行的输入,有下面这些:

环境变量

环境变量继承自系统和当前用户,可以在执行的时候获取,在执行也可修改,但只对此次执行的脚本有效,对当前系统无效.

使用envprintenv命令即可获取所有当前环境变量,用法与自定义变量无异.

shell关键字

太多了.放链接:
shell 保留关键字

自定义变量

自定义变量默认都是字符串类型,除非特殊声明,如数组型.不支持如浮点/布尔等类型,且只支持以字母或下划线开头的自定义变量,并且长度不设限制,但早期的有多早哥也不知道shell解释器不允许过长的,通常限制在255个长度内.并且自定义的变量不允许与内置关键字重名.
在使用变量时,必须以$开头,可以用{}包裹整个变量,用以界定变量.
创建一个变量时,必须赋值,以变量名=值的形式,且前后不允许有空格,可以用双引号将值括起来,这样值可存在空格,比如:

var_num1=1
var_char1="1"
var_char2="1 2 3"
if [ var_num1 -eq{var_char1} ];then
  echo "equal."
else
  echo "not equal."
fi
for v in var_char2
do
   echo "value:{v}."
done

这里的在给变量赋值的时候,加不加双引号其实是一样的,但有时可能变量值内容会很多,那就建议加上双引号了,以为双引号是作为界定符的功能.

可以使用unset $var_xxx来删除某个变量.

可以使用readonly $var_xxx来使某个变量为只读.

并且自定义变量分局部变量与全局变量,默认情况下,都是全局变量,除非在变量前声明local.


参考:
POSIX标准 shell在线手册