Linux命令行与shell脚本编程系列教学笔记(二)

注意区分一下符号:

let、expr

$()、``

$(())、$[]

test 、[ ] :判断参数 -e -d -f -r -w -x   \   = != -z   \  -gt -lt -eq -le -ge

[[ ]] (( ))

$0、$?、$#、$*、$@、"$*"、"$@"、$$、$!、$_

${变量名} 、${!变量名}


使用多个命令:

要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开。

创建 shell 脚本文件

在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:
#!/bin/bash

echo命令可用单引号或双引号来划定文本字符串。如果在字符串中用到了它们,你需要在
文本中使用其中一种引号,而用另外一种来将字符串划定起来。

命令替换

shell脚本中最有用的特性之一就是可以从命令输出中提取信息,并将其赋给变量。把输出赋
给变量之后,就可以随意在脚本中使用了。这个特性在处理脚本数据时尤为方便。
有两种方法可以将命令输出赋给变量:
 反引号字符(`)

 $()格式

要么用一对反引号把整个命令行命令围起来:
testing='date'
要么使用$()格式:
testing=$(date)

举例:通过命令替换获得当前日期并用它来生成唯一文件名。

#!/bin/bash
# copy the /usr/bin directory listing to a log file
today=$(date +%y%m%d)
ls /usr/bin -al > log.$today

today变量是被赋予格式化后的date命令的输出。这是提取日期信息来生成日志文件名常用
的一种技术。 +%y%m%d格式告诉date命令将日期显示为两位数的年月日的组合。

执行数学运算

expr 命令,直接举例

 

使用方括号

在bash中,在将一个数学运算结果赋给某个变量时,可以用美元符和方括号($[ operation ])将数学表达式围起来。

$ var1=$[1 + 5]
$ echo $var1
6
$ var2=$[$var1 * 2]
$ echo $var2
12

bash shell数学运算符只支持整数运算。

 浮点解决方案

 最常见的方案是用内建的bash计算器,叫作bc。
1. bc的基本用法
bash计算器实际上是一种编程语言,它允许在命令行中输入浮点表达式,然后解释并计算该
表达式,最后返回结果。 bash计算器能够识别:
 数字(整数和浮点数)
 变量(简单变量和数组)
 注释(以#或C语言中的/* */开始的行)
 表达式
 编程语句(例如if-then语句)
 函数

 要退出bash计算器,你必须输入quit。

浮点运算是由内建变量scale控制的。必须将这个值设置为你希望在计算结果中保留的小数
位数,否则无法得到期望的结果。

$ bc -q
3.44 / 5
0
scale=4
3.44 / 5
.6880
quit
$

scale变量的默认值是0。在scale值被设置前, bash计算器的计算结果不包含小数位。在将
其值设置成4后, bash计算器显示的结果包含四位小数。 -q命令行选项可以不显示bash计算器冗
长的欢迎信息。

在脚本中使用bc
现在你可能想问bash计算器是如何在shell脚本中帮助处理浮点运算的。用命令替换运行bc命令,并将输出赋给一个变量。基本格式如下:
variable=$(echo "options; expression" | bc)

第一部分options允许你设置变量。如果你需要不止一个变量,可以用分号将其分开。
expression参数定义了通过bc执行的数学表达式。

$ cat test9
#!/bin/bash
var1=$(echo "scale=4; 3.44 / 5" | bc)
echo The answer is $var1
$ cat test11
#!/bin/bash
var1=20
var2=3.14159
var3=$(echo "scale=4; $var1 * $var1" | bc)
var4=$(echo "scale=4; $var3 * $var2" | bc)
echo The final result is $var4

在shell脚本中,你可以将输出赋给一个变量

variable=$(bc << EOF
options
statements
expressions
EOF
)

EOF文本字符串标识了内联重定向数据的起止。记住,仍然需要命令替换符号将bc命令的输
出赋给变量。

var5=$(bc << EOF
> scale=4
> 1 + 4
> EOF
> )
$ cat test12
#!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71
var5=$(bc << EOF
scale = 4
a1 = ( $var1 * $var2)
b1 = ($var3 * $var4)
a1 + b1
EOF
)
echo The final answer for this mess is $var5

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值