转义和引用

引入问题:之前我们知道了变量名前面加上$符号代表引用变量,但是如果我现在就需要打印出$符号该怎么办呢?想想我们在python中怎么做的,答案是转义。

转义

Shell中有两种字符
一种是普通字符,没有其他的特殊含义,即普通纯文本(literal)
另一种是元字符(meta),是shell的保留字符,在shell中有特殊的含义,比如:$
为了使用元字符的本来含义,需要使用反斜线 \ 来转义特殊字符 !!!

引用

Shell中的引用是指将字符串用某种符号包含起来,以防止特殊字符被解析为其他的意思。
Shell中一共有4种引用符:单引号、双引号、反引号 和 转义符

部分引用
指用双引号印起来的内容。使用这种引用时,$、`(反引号)、\(转义符) 这3个还是会解析成特殊的意义

全引用
指用单引号引起来的内容,单引号中的任何字符串都当作普通字符串。单引号当中不能包含单引号,转义也不行。

命令替换

Shell中可以将命令的标准输出作为值赋给某个变量,Shell中有两种方式可以完成命令替换,一种是反引号(`),一种是:$()

反引号(`)

反引号是常用的一种命令替换,有点在于使用方便
direct=`pwd` #direct等于当前绝对路径

$()

$()和反引号是等价的,但是$()会让代码看上更加清晰,同时还支持嵌套,反引号是不支持嵌套的算术扩展是Shell提供的整数变量的运算机制,是Shell的内建命令之一算术扩展是Shell提供的整数变量的运算机制,是Shell的内建命令之一。

运算

算术运算

Shell中只支持整数计算,所有产生小数的运算都会舍去小数部分。
常见运算符
常见的运算符包含:加(+)、减(-)、乘(*)、除(/)、取余(%) 和 幂(**),常见的算术运算大多需要结合Shell的内建命令 let 来使用。

符合运算符
常见符合运算符包含加等(+=)、减等(-=)、乘等(*=)、除等(/=)、余等(%=)

其他算术运算

$[]
$[] 可以用于简单的运算

算术扩展:$((…))
算术扩展是Shell提供的整数变量的运算机制,是Shell的内建命令之一。

高精度计算
bc 是Linux下一款用来进行高精度计算的工具,甚至可以称它为一门语言
直接输入:bc 进入它的交互模式
默认情况下,bc不显示小数部分,可以通过scale来设置小数位数
在shell脚本中可以通过管道符来使用 bc

测试

Shell中进行测试有两种方法
第一种是使用 test 命令
第二种是使用 [ 启动一个测试,以 ] 结束测试

test

test expression
expression 是一个表达式,可以是算术比较、字符串比较、文本和文件属性等

-e 是一个文件测试符,用来判断文件是否存在

[ expression ]

[ expression ] 是常用的测试方式
注意:左边的括号 [ 后边有一个空格, 右括号 ] 前面也有一个空格,任意一个地方少一个空格都会报错
在if、while、case等里面一般都会使用这种方式

文件测试

通过文件测试符,可以进行非常多的文件测试

字符串测试

Shell中字符串的比较主要有等于、不等于、大于、小于、是否为空

整数比较

整数测试是常用的简单算术运算

逻辑测试

逻辑测试主要有逻辑非(!)、逻辑与(-a 或 &&)、逻辑或(-o 或 ||)3种

判断

If 判断是常用的判断语句,有多种形式,可以根据不同的需求来选择形式
语法规则

需要注意:
1. 判断式后面有分号(;) 和 then ,并且之间有空格
2. 一个 if 判断最后一定要以 fi 结尾

示例:

shell编程(一)的更多相关文章

  1. Linux学习笔记(17) Shell编程之基础

    1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...

  2. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  3. Linux Shell编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  4. Shell编程菜鸟基础入门笔记

    Shell编程基础入门     1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...

  5. Linux_10------Linux之shell编程------变量

    .-9 vim num.sh #! /bin/bash num1=$1 num2=$2 sum=$(($num1+$num2)) #变量sum是num1和num2的综合 echo $sum 执行 ./ ...

  6. 需要交互的shell编程——EOF(转载)

    在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“, 再次返回到主调shell,可将其理解为分 ...

  7. ****CodeIgniter使用cli模式运行,把php作为shell编程

    shell简介 在计算机科学中,Shell俗称壳(用来区别于核).而我们常说的shell简单理解就是一个命令行界面,它使得用户能与操作系统的内核进行交互操作. 常见的shell环境有:MS-DOS.B ...

  8. Shell 编程基础之变量和环境变量

    一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...

  9. Linux Shell编程基础

    在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐 ...

  10. centos 下建用户 shell编程

    useradd 用户名 passwd 用户名 cat /etc/passwd  查看用户信息 删除用户 userdel -r   加一个 -r 表示把用户及用户的主目录都删除 su  切换用户 sud ...

随机推荐

  1. Maven的使用入门

    0.什么是maven? 它是一个软件开发管理工具,主要管理工作是:依赖管理,项目一键构建 1.我们为什么要使用maven? 使用maven构建的项目不包含jar包文件,所以整个项目的体积非常小 mav ...

  2. PHP疑难杂症

    下面这种写法是否允许? echo '\n' // \n echo "\n" // 输出换行 直接访问对象不存在的属性,会怎样? $o = new stdClass(); echo ...

  3. win10系统安装Oracle11报错不满足最低要求

    以下问题是,在安装Oracle过程中遇到的问题以及自己的解决方法: 问题一:下载好两个Oracle的安装压缩包文件,同时解压后,启动setup.exe,报错:[INS-13001]环境不满足最低要求. ...

  4. java 程序命名规则

    程序命名规则提示:模块设计人员确定本软件的模块命名规则(例如类.函数.变量等),确保模块设计文档的风格与代码的风格保持一致.可以从机构的编程规范中摘取或引用(如果存在的话).命名规则1.包命名     ...

  5. Javascript 香港身份证号校验

    <!DOCTYPE html> <html> <head> <title>香港身份证校验码计算</title> </head> ...

  6. 常用移动web开发框架--转载

      阅读目录 1.1 jQuery mobile flat-ui 主题 1.2jQuery mobile Bootstrap 主题 4.1 GMU 4.2 Clouda+ 4.3 efe 5.1 Sp ...

  7. Python量化常用函数

    # -*- coding: utf-8 -*- # @Author: fangbei # @Date: 2017-08-26 # @Original: price_str = '30.14, 29.5 ...

  8. 02-django查询

      目录 (一)查询 1 .基本查询(等于.大于.包含字符.日期.字段比较.逻辑) 2 .关联查询(即为join查询)(一对多.多对多.一对一) 3 .聚合查询(统计查询) (二)关联对象(已知A表的 ...

  9. 除去DataTable中的空行!

    昨天向数据库中导入Excel数据时  由于空行 总是报错!下面附上两种去除空行的方法! 方法一.某行某列值为空时 DataView dv = dt.DefaultView;              ...

  10. Python中的None与Null(空字符)的区别

    参考自 Python中的None与空字符(NULL)的区别 - CSDN博客 http://blog.csdn.net/crisschan/article/details/70312764 首先了解p ...