shell脚本(三)

# 学习视频笔记均来自B站UP主" 泷羽sec",如涉及侵权马上删除文章

仅用于学习参考,不要越过法律红线

一:向脚本程序传递参数的实现

(1)创建脚本文件

创建一个名为 s.sh 的脚本文件,并写入以下内容:

#!/bin/bash 
 
echo "执行的文件名是: $0" 
echo "第一个参数是: $1" 
echo "传递的参数作为一个字符串显示: $*" 
echo "传递的参数独立作为每个字符串显示: $@" 
echo "传递到脚本的参数个数是: $#" 
echo "最后命令的退出状态: $?" 
echo "脚本运行的当前进程ID是: $$"
 
保存并退出编辑器。

先ESC,然后:wq! 即可完成 

 

(2). 给脚本添加执行权限

chmod +x s.sh

(3). 执行脚本并传递参数

./s.sh 参数1 参数2 参数3

 

二、Shell 编程中进行数学运算 

(1)使用expr

运算符之间必须有空格。
乘法符号 * 必须加反斜杠 \ 以防止被 Shell 解释为通配符。
只支持整数运算,不支持浮点运算。如果需要浮点运算,可以改用 bc 或 awk。

 a=8 b=3 
    # 加法 
    result=$(expr $a + $b) 
    echo "a + b = $result" 
    # 乘法 
    result=$(expr $a \* $b) 
    echo "a * b = $result" 
    # 除法 
    result=$(expr $a / $b) 
    echo "a / b = $result" 
    # 取余 
    result=$(expr $a % $b) 
    echo "a % b = $result"
     
     
    result=$(expr $a + $b) 
    #  expr 是一个外部命令,用于执行整数运算。
    #  $(...) 用于捕获命令的输出,将其赋值给变量 result。
    #  expr $a + $b 表示对变量 a 和 b 的值进行加法运算。

 

(2). 使用 $(( )) 

语法

$(( 表达式 ))

支持更简洁的语法。 不需要调用外部命令,效率更高。 

 

  a=18 b=3 
    # 加法 
    result=$((a + b)) 
    echo "a + b = $result" 
    # 减法 
    result=$((a - b)) 
    echo "a - b = $result" 
    # 乘法 
    result=$((a * b)) 
    echo "a * b = $result" 
    # 除法 
    result=$((a / b)) 
    echo "a / b = $result" 
    # 自增和自减 
    ((a++)) 
    echo "a 自增 = $a" 
    ((b--)) 
    echo "b 自减 = $b"

 

(3)使用 let 

let 变量=表达式(运算方式类似 $(( )),语法稍微不同。)

a=15 b=3 
# 加法 
let result=a+b 
echo "a + b = $result" 
# 减法
let result=a-b 
echo "a - b = $result" 
# 乘法 
let result=a*b 
echo "a * b = $result" 
# 除法
let result=a/b 
echo "a / b = $result" 
# 取余
let result=a%b 
echo "a % b = $result" 
# 自增 
let a++ 
echo "a 自增 = $a" 
# 自减 
let b-- 
echo "b 自减 = $b"

 

(4).使用 bc 进行浮点运算 

echo "表达式" | bc

特点:

支持浮点运算。
可以设置小数位数 (scale)。
支持科学计算,如幂运算、对数、平方根等。

a=10.5 b=3.2 
# 加法 result=$(echo "$a + $b" | bc) 
echo "a + b = $result" 
# 乘法 result=$(echo "$a * $b" | bc) 
echo "a * b = $result" 
# 除法,保留两位小数 
result=$(echo "scale=2; $a / $b" | bc) 
echo "a / b = $result" 
# 求平方 r
result=$(echo "$a^2" | bc) 
echo "$a 的平方 = $result"

5. 使用 awk

awk "BEGIN {print 表达式}" 

支持整数和浮点数运算。 灵活且功能强大。 

a=12 b=3 
# 加法 
result=$(awk "BEGIN {print $a + $b}") 
echo "a + b = $result" 
# 浮点运算 
result=$(awk "BEGIN {print $a / $b}") 
echo "a / b = $result" 
# 求幂 
result=$(awk "BEGIN {print $a ^ $b}") 
echo "$a 的 $b 次幂 = $result"

 

各自区别

expr 、$(()) 、let本身自带,性能高,但是不支持浮点型
bc 、 awk 外部命令,支持浮点型,但是性能略低

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值