linux学习之shell脚本 ------- 引用与运算符

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]

  变量和替换操作,在脚本中执行变量替换时最容易犯的一个错误就是引用错误,所以有必要看一下各种引号的代表的意义与作用。

引用:

  双引号" "

   使用双引号可引用除字符$、`、\ 外的任意字符或字符串。如下所示:

jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo -e "hello $SHELL '\n* jesson`echo 20121020`"
hello /bin/bash '
* jesson20121020

  单引号‘ ‘

   单引号与双引号类似,不同的是shell会忽略任何引用值。换句话说,如果屏蔽了其特殊含义(不会屏蔽\),则会将引号里的所有字符,包括引号都作为一个字符串。

还是以上个例子来说明,我们这次将外面的双引号换成单引号。

jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo -e 'hello $SHELL \n* jesson`echo 20121020`'
hello $SHELL 
* jesson`echo 20121020`
   可以看出,除了\n,其他的特殊符号全被屏蔽了。

  反引号``

   反引号用于设置系统命令的输出到变量。shell将反引号中的内容作为一个系统命令,并执行其内容。

jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo "hello `echo 20121020`"
hello 20121020

  反斜杠 \

   反斜杠可以屏蔽特殊含义。下述字符包含有特殊意义:& * + ^ $ ` " | ?。

jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo *
helloworld.sh parm.sh searchfile.sh
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo \*
*
  

运算符:

  运算符是对计算机发出的指令

  运算对象:

   - 数字,字符

   - 变量

   - 表达式:运算符和运算对象的组合体

  运算符类型:

   &[ ] 告诉shell对方括号中的表达式求值。

   按位运算符: 

   ~(反运算符),<<(左移) ,>>(右移),&(与),|(或),^(异或)   

jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ ~2 ]
-3
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 2<<1 ]
4
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 2>>1 ]
1
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 2&3 ]
2
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 2|3 ]
3
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 2^3 ]
1

   逻辑运算符:

   &&(逻辑与),||(逻辑或),>,==,<,!=

jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 1&1 ]
1
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 1&0 ]
0
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 1|0 ]
1
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 1|1 ]
1
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[ 0|0 ]
0

   赋值运算符: 

   =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=

   let $count=$count + $change

   let $count+=$change

jesson@jesson-HP:~/develop/workspace/shell_workspace$ var=10
jesson@jesson-HP:~/develop/workspace/shell_workspace$ let var+=4
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $var
14

  表达式替换

   $[ ] 和$(()) 用于表达式求值。

   $[ ]可以接受不同基数的数字:

    -[ base#n ] n表示基数从2到36的任何基数。

jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $((8+6))
14
jesson@jesson-HP:~/develop/workspace/shell_workspace$ echo $[10#8+1]
9


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。