shell特殊符号和变量命名规则


学习一下 shell 里面的特殊符号, 和变量的命名规则

bash中其他特殊符号

符号            作用
''              单引号。在单引号中所有的特殊符号,如"$" 和 "`" (反引号) 都没有特殊含义
""              双引号。在双引号中特殊符号都没有特殊含义,但是"$"(调用变量的值) , "`"(调用命令)  和 "\"(转义符)
``              反引号. 反引号括起来的内容是系统命令, 在Bash中会先执行它. 和 $() 作用一样, 不过,推荐使用 $() , 因为反引号 看起来不容易看.
$()             和反引号作用一样, 用于引用系统命令
()              用于一串命令执行时, () 中的命令会在子shell中运行.
{}              用于一串命令执行时, {}中的命令会在当前shell 中执行, 也可以用于变量变形与替换
[]              用于变量的测试
#               在shell 脚本中, #开头的行代表注释
$               用于调用变量的值, 比如 $name , 就是调用变量name的值

注意事项

在单引号中, 所有的特殊符号都没有特殊含义.
在双引号中, 如  "$" , ""  ,  "\" 都保留特殊含义.
`` 号和 $()  的 作用一样, 都是用来引用系统命令, 一般都是使用 $() 

小括号,中括号和大括号

父shell 和 子shell

在我们bash 中, 是可以调用新的bash 的. 对于新调用的bash ,就是子shell , 而调用它的就是父shell .
可以自己去操作试试, 输入bash , 再输入 pstree


使用注意

子shell 是自己开启了一个进程, 在它的进程里修改了name的值,但是它的父进程里的name 值并没有被子shell给改.

在实际工作中, 除非很特殊的需求, 一般也很少 用 (命令) 去开一个子shell 
而且 { } 是在当前shell 执行, 并且第一个命令和左边括号直接必须有一个空格 and 最后一个命令要用分号,  因此我们一般也不用它, 直接在当前shell 里执行命令即可.

小括号和大括号的区别

如果是用于一串命令的执行, 小括号和大括号的主要区别在于:
()执行一串命令时, 需要重新开一个子shell 进行执行
{}执行一串命令时, 在当前shell 进行执行
()和{} 都是把一串命令放在括号里, 并且命令之间用 ; 隔开
() 最后一个命令可以不用分号
{} 最后一个命令要用分号

() 里的命令不必和括号有空格
{}里的第一个命令必须和左括号之间有空格

()和{}中括号里面的某个命令的重定向只影响该命令, 但括号外的重定向则影响括号里的所有命令

shell的变量命名规则

变量名不能以数字开头, 可以由字母, 数字和下划线组成.
变量用等号连接值, 登号左右两侧不能有空格.
变量的值里如果有哦你哥哥, 需要用单引号或者双引号包起来.
在bash中, 变量的默认类型都是字符串类型.
在变量的值中, 可以使用"\" 转义符.
变量用等号连接值, 等号两边不能有空格. 这是因为在linux 中, 如果有了空格,就会当成命令, 空格后的就是命令的参数.
对变量值的叠加,方法是 "$varname"value_add  ,  如 test="$test"456 
把命令的结果作为变量赋予变量,  用 变量=$(命令) ,  如test=$(date)
环境变量名建议大写, 便于 区分

文章作者: 陌上人如玉
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陌上人如玉 !
  目录