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

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

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

引用:

  双引号" "

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

[email protected]:~/develop/workspace/shell_workspace$ echo -e "hello $SHELL '\n* jesson`echo 20121020`"
hello /bin/bash '
* jesson20121020

  单引号‘ ‘

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

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

[email protected]:~/develop/workspace/shell_workspace$ echo -e 'hello $SHELL \n* jesson`echo 20121020`'
hello $SHELL
* jesson`echo 20121020`

   可以看出,除了\n,其他的特殊符号全被屏蔽了。

  反引号``

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

[email protected]:~/develop/workspace/shell_workspace$ echo "hello `echo 20121020`"
hello 20121020

  反斜杠 \

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

[email protected]:~/develop/workspace/shell_workspace$ echo *
helloworld.sh parm.sh searchfile.sh
[email protected]:~/develop/workspace/shell_workspace$ echo \*
*

  

运算符:

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

  运算对象:

   - 数字,字符

   - 变量

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

  运算符类型:

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

   按位运算符: 

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

[email protected]:~/develop/workspace/shell_workspace$ echo $[ ~2 ]
-3
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 2<<1 ]
4
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 2>>1 ]
1
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 2&3 ]
2
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 2|3 ]
3
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 2^3 ]
1
   逻辑运算符:

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

[email protected]:~/develop/workspace/shell_workspace$ echo $[ 1&1 ]
1
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 1&0 ]
0
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 1|0 ]
1
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 1|1 ]
1
[email protected]:~/develop/workspace/shell_workspace$ echo $[ 0|0 ]
0
   赋值运算符: 

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

   let $count=$count + $change

   let $count+=$change

[email protected]:~/develop/workspace/shell_workspace$ var=10
[email protected]:~/develop/workspace/shell_workspace$ let var+=4
[email protected]:~/develop/workspace/shell_workspace$ echo $var
14

  表达式替换

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

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

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

[email protected]:~/develop/workspace/shell_workspace$ echo $((8+6))
14
[email protected]:~/develop/workspace/shell_workspace$ echo $[10#8+1]
9
时间: 2024-10-11 21:03:27

linux学习之shell脚本 ------- 引用与运算符的相关文章

linux学习之shell脚本 ------- 输入与输出

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 前面介绍了Shell脚本的基础和运算符等,今天再来看一下关于Shell脚本的输入与输出. Shell输入与输出的一些命令: echo read cat 管道 tee exec Shell输入与输出的一些概念: 文件重定向 标准输入.输出和错误 合并标准输出和标准错误 使用文件描述符 下面,我们挨个看每个命令的用法: 输入输出命令的用法: 1. echo 该命令的作用是可以显

linux学习之shell脚本

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] Shell脚本基本元素: #!/bin/bash --- 第一行 # --- 注释 变量 流程控制结构 看一个简单的例子,学任何语言,我想大多数情况下都是从helloworld程序开始的,shell也是一门语言,我们也从helloworld开始. 新建一个名为helloworld.sh的文件,在里面写入: helloworld.sh #!/bin/sh #这是一个很简单的打

linux学习之shell脚本 ------- 脚本参数传递

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天再来看一下如何向shell脚本传递参数,需要掌握两个命令,一个是 shift命令,另一个是getopts. 脚本参数传递 shift命令 用法: shift n 每次将参数位置向左偏移n位 假如我们要实现统计多个文件的总行数,就可以用到这个shift命令了,如下: opt2.sh #!/bin/bash #op2 static files total lines; st

linux学习笔记:shell脚本编程相关(上)

前言 unix/linux操作系统下的shell,是一种壳,其目的是提供一个用户与计算机相互交互的命令接口,通过输入各种命令,达到操作的目的. 与此同时,shell支持控制流程,进而可以组合出各种各样的应用实例. shell脚本的格式 首行shebang机制: bash脚本,首行添加#!/bin/bash [options] csh脚本,首行添加#!/bin/csh [options] ksh脚本,首行添加#!/bin/ksh [options] -- 描述脚本的注释部分: 包括Author,

Linux学习日记—shell脚本基础

在Linux的日常维护中,shell脚本是我们必不可少的日常管理之一:其作用是解决服务器的自动化维护工作,减轻管理员的工作量:如果想提高shell脚本的编写速度,必须要熟练使用vi编辑器的各种快捷键. [什么是shell]    Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的.但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使

Linux学习日记—Shell脚本与计划任务

本篇文章将以实现MySQL数据库的定期自动备份为目标,介绍Shell脚本与计划任务的完美协作过程.其中,Shell脚本负责具体的备份操作,Crond服务器负责控制备份周期. [确认备份方案] 备份主机:IP地址为192.168.4.110,通过机柜内网络连接目标主机. 数据库服务器:IP地址为192.168.4.11,MySQL服务监听端口为3306. 备份内容:对MySQL服务器中的studydb,coursdb库进行远程备份,每天凌晨2:30执行,每个库备份独立的.sql文件,然后压缩为.t

Linux学习-高级shell脚本编程(一)函数

引文: 通常编写shell脚本时,你会发现很多地方都要用到相同的代码或者说是相同的功能.如果是一段小代码,那无所谓.可如果多次使用而且还是相同的代码,我想你也会感觉很烦的.为了能够让代码重用,这就使用到函数了. 温馨提示 变量赋值的格式为: 变量名=变量值 注意事项: 变量名前面不应加美元"$"符号.(和PHP不同)等号"=" 前后不可以有空格.和C语言不同,Shell中不需要显式的语法来声明变量. 变量名不可以直接和其他字符相连,如果想相连,必须用括号:echo

linux学习19 shell脚本基础-bash脚本编程基础及配置文件

一.shell脚本编程 1.编程语言的分类,根据运行方式 a.编译运行:源代码 --> 编译器(编译) --> 程序文件 C语言: b.解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行:即源代码本身并不能运行,而是启动一个解释器的进程,把整个源代码的内容当做解释器的参数.因为其是边解释边运行因此运行过程中比起编译运行速度会差一些. c.无论是编译器还是解释器中间总需要另外一个程序,即在运行过程中全程参与,这就是我们说的翻译官,他需要将我们人能识别的代码转换成机器所能识别的

linux学习之shell脚本 ------- 控制流结构

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天开始学一些同其他高级语言一样的shell流控制结构 流控制语句: 1. if语句 语句格式: if condition1 then command1 else condition2 then command2 else command3 fi 注:if语句必须以fi终止. 如果没有condition2,则if语句可以简化为如下: if condition then co