BASH中的特殊符号

BASH中的特殊符号

1. $变量
变量不需先声明,使用$引用变量的值
  x=12         ##等号左右不能有空格        
  echo $x
一些重要变量
$HOME 当前用户主目录
$PATH 搜索目录
$PS1 命令提示符
$PS2 二级提示符
$IFS shell输入分隔符,通常为空格、制表符和换行符
$# 参数个数
$0 shell脚本名字
$1,$2... 第1,2个参数
$* 所有参数,用IFS中的第一个字符分隔
$@ 类似$*,但不使用IFS字符分隔
$?  前条命令的退出状态0(true) 1(false)
2. 单引号 ( '' )
当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符
3. 双引号 ( " " )
双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,
而双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串。
4. 反引号(``)或$()
命令替换,$()格式受到POSIX标准支持,$(command),执行命令并捕获其输出,可以放到变量中如下面的expr例子
5. (( )) 或let
算术赋值,用来给表达式赋值并返回一个状态码。利用算术赋值可以进行赋值运算及逻辑比较
((x=x+1))           ## x=$((x+1))
if ((30 < age && age < 60)); then
6. $(( ))
算术扩展,用于显示表达式的值或者把值赋给一个变量,可替代expr命令,比expr更高效.
 x=$(($x+1))          ##$(( ))中单个变量引用$符可选,即可写成 x=$((x+1))
 x=$(expr $x + 1)  ##加号左右要有空格 expr $x + 1 执行结果捕获其输出放到变量
7. [ ] 或test
  if [ -f fred.c ]  ##要有空格
  if [ 30 -lt $age -a $age -lt 60 ]; then
8. [[ ]]
作用与[ ]类似,操作符不同,与C语言操作一致
if [[ 30 < $age && $age < 60 ]]; then   ##要有空格,变量前要有$
9. && || 及!
  statement1 && statement2 && statement3,上一条命令返回true才执行下一条;||类似
  if [ -f fred.c ] && echo 'exists' && [ -f fred.h ]   ## echo 返回的是true
 
10. ( ) 子shell
11. : 空命令,返回true
12.  << Here文档
bash中命令行扩展顺序
(1)花括号扩展  rm {main,temp,test}.c
(2)代字符扩展 echo ~
(3)参数扩展和变量扩展 $a
(4)算术扩展  x=$(($x+1))
(5)命令替换 $(command)
(6)分词 IFS
(7)路径名
(8)处理替换

你可能感兴趣的:(BASH中的特殊符号)