1,变量建立
变量名称不能以数字开头
var=5
var=hello
可以直接赋值数字和字符串,本质上其实都是字符串,declare -i var变为整数
添加一个变量set 也可省略,shell变量,只是当前shell和子shell可继承
添加一个环境变量export var,declare -x var,删除一个环境变量unset var,删除后是空,显示所有环境变量env,export -p
例如
PATH是解读命令时候去哪里寻找
SHELL是当前解释器的目录,/bin/bash说明是bash shell
USER,UID,HOME,IFS,PWD,OLDPWD,PS1,PS2,PPID
2,变量的取值
加符号$var就可以取到变量的值,类似c语言,*p取p指向地址处的值,此处省略了大括号${var},大括号可以避免上下文的连接歧义
awk中print内建变量,不需要加$
3,变量的运算
默认都是字符串,除非let “var+=2”
var1=((var+5)) ;var2=[var+5];这样是不会成功的,符号只是一种运算,变量赋值要的是结果,要加$
var1=$((var+5)) ;var2=$[var+5]
以echo为例,echo hello ,shell程序主要是命令+选项+参数
命令和选项是通过man可以查出,参数分为单独引用,单引号,双引号
区别如下:
echo \m ;echo \\m;echo \\\m;
echo '\m';echo '\\m';echo '\\\m'
echo "\m";echo "\\m";echo "\\\m"
双引号:除 $ ` \之外,直接引用,保留空格,保留换行
单引号:所见即所得,所有字符,但是不能屏蔽自己,单引号
反引号:系统命令执行的结果$()
反斜线:屏蔽下一个特殊字符为普通字符
参数传递过程其实分为两部分
1参数本身处理:双引号,单引号,括号,反斜线,单独引用
2参数解读处理:例如grep接到\b,加正则表达式选项为整数,不加正则表达式\b本身
echo -e;grep -P把\t识别为tab