Shell 编程入门(二)

一、转义和引用

转义

通过 Shell 编程入门(一) 我们知道了如果想要获取一个变量里面的值我们可以这样:echo $d1

这里写图片描述

但是,我们就是想输出 $符号该怎么办呢?

使用转义符号:

这里写图片描述

shell 中的一些特殊字符:

这里写图片描述

部分引用

如果我们定义的变量是这样的:aa="1 2 3",如果我们只是用普通的 $获取变量,那么结果是这样的:

这里写图片描述

无论数字之间有多少个空格,最终直接通过 $输出的结果都只用一个空格隔开,那么,我们想要原样输出该怎么办?

使用双引号包裹 $aa即可:

这里写图片描述

如果还想在里面输出其他字符:

这里写图片描述

双引号会将里面的 $,````(反引号)(转义符)```翻译成特殊的含义,其余的字符原样显示,此即部分引用。

全引用

使用转义符 \我们可以把一些具有特殊含义的字符原样输出,但是如果我们不想使用 \该怎么办?

使用单引号包裹待输出字符:echo '$\\$`dfd'

这里写图片描述

单引号里面的字符无论是否具有特殊含义都会被原样输出,此即全引用。

反引号

如果我们想要将某个命令的执行结果作为值赋给某个变量该怎么办?

使用反引号:aa=`date`

这里写图片描述

$()

( ) 的 作 用 和 反 引 号 的 作 用 是 相 同 的 , 不 同 的 是 ‘ ‘ ‘ () 的作用和反引号的作用是相同的,不同的是 ``` ()()```会让代码看上去更加清晰,而且还可以嵌套

这里写图片描述

二、运算

常见运算符

使用 shell 的內建命令 let来进行运算(不使用 let命令的话只是简单的字符串拼接):

这里写图片描述

常见运算符,如下:加(+),减(-),乘(*),除(/),取余(%),幂(**):

这里写图片描述

复合运算符

常见的符合运算符,如下:加等于(+=),减等于(-=),乘等于(*=),除等于(/=),余等于(%=):

这里写图片描述

$[]

let命令类似:

这里写图片描述

$((…))

let命令类似:

这里写图片描述

使用 bc 进行高精度计算

bc命令也可以用来做计算,默认 bc不显示小数,如果想使用小数,可以通过 scale 来设置:

这里写图片描述

也可以使用管道命令 |来使用 bc

这里写图片描述

三、测试

test

在 shell 中如果要判断一个文件目录是否存在,该怎么办呢?

使用 test命令:

test expression

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

这里写图片描述

test有两个返回值:0 为 true,1 为 false。

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

这里给出常用的文件测试符,如果还有其他需求可以查阅相关文档:

这里写图片描述

注:连接文件那里,l 是个大写的 L。

[ expression ]

test功能类似,比较常用,expression 也是一个表达式,同上。
注:expression 左右两边各有一个空格。

这里写图片描述

字符串测试

字符串的一些比较主要有:

  • 为空判断(-z
  • 非空判断(-n
  • 等于(=
  • 不等于(!=
  • 大于(>
  • 小于(<

这里写图片描述

这里写图片描述

如果在判断大于,小于的时候不想加转义符号,需要使用双重方括号 [[...]]

这里写图片描述

整数测试

整数的一些比较主要有:

  • 等于(-eq
  • 不等于(-ne
  • 大于(-gt
  • 小于(-lt
  • 大于等于(-ge
  • 小于等于(-le

这里写图片描述

注:-eq-eq-eq-eq-eq-eq均为整数的测试符,不可以用来在字符串之间进行比较,否则会报错:

这里写图片描述

逻辑测试

逻辑测试主要的运算包括:

  • 与(-a&&
  • 或(-o||
  • 非(!

这里写图片描述

注:如果想使用符号 &&||,请使用双重方括号 [[ 1 -eq 1 && 2 -eq 3 ]]

四、判断

包括:if [ ... ]; thenelif [ ... ]; thenelse ...

一个简单的小 demo 如下:

#!/bin/bash
# This is a test bash script

#num=8
#echo $num

if [ -z "$num" ]; then
    echo "This num is empty!!!"
elif [ "$num" -eq "1" ]; then
    echo "The num's value is 1"
    echo "hello one"
elif [ "$num" -eq "6" ]; then
    echo "You are right, the num is six"
else
    echo "I don't know which num you input"
fi

注:if必须要用 fi结尾,否则运行脚本时会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值