声明:
本文的学习内容来源于B站up主“泷羽sec”视频“蓝队基础之网络七层杀伤链”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。
向脚本程序传递参数的实现
1. 创建脚本文件
创建一个名为 s.sh 的脚本文件,并写入以下内容:
#!/bin/bash
echo "执行的文件名是: $0"
echo "第一个参数是: $1"
echo "传递的参数作为一个字符串显示: $*"
echo "传递的参数独立作为每个字符串显示: $@"
echo "传递到脚本的参数个数是: $#"
echo "最后命令的退出状态: $?"
echo "脚本运行的当前进程ID是: $$"
保存并退出编辑器。
2. 给脚本添加执行权限
执行以下命令,给脚本文件添加可执行权限:
chmod +x s.sh
3. 执行脚本并传递参数
运行脚本时,可以在命令后面添加参数,例如:
./s.sh 参数1 参数2 参数3
4. 脚本内容解释
以下是脚本中各参数变量的解释:
$0:表示当前脚本的文件名或执行路径。
$1、$2...:表示传递给脚本的第一个、第二个……参数。
$*:表示传递给脚本的所有参数,作为一个字符串显示,参数之间以空格分隔。
$@:表示传递给脚本的所有参数,每个参数独立显示,保持独立性。
$#:表示传递给脚本的参数个数。
$?:表示上一个命令的退出状态。0 表示成功,非 0 表示失败。
$$:表示当前脚本运行的进程 ID。
二、Shell 编程中进行数学运算
1. 使用 expr
expr 是一个外部命令,用于执行基本的整数运算。
语法
expr 表达式
注意
运算符之间必须有空格。
乘法符号 * 必须加反斜杠 \ 以防止被 Shell 解释为通配符。
只支持整数运算,不支持浮点运算。如果需要浮点运算,可以改用 bc 或 awk。
示例
a=10 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. 使用 $(( ))
$(( )) 是 Shell 的内置运算符,支持基本的整数数学运算,推荐使用。
语法
$(( 表达式 ))
特性
支持更简洁的语法。
不需要调用外部命令,效率更高。
示例
a=10 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.
3.使用 let
let 是 Bash 的内置命令,专门用于整数运算。
语法
let 变量=表达式
特性
运算方式类似 $(( )),语法稍微不同。
示例
a=10 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.
4.使用 bc 进行浮点运算
bc 是 Shell 外部工具,支持浮点数计算,适合复杂数学运算。
语法
echo "表达式" | bc
# kali 使用 apt install -y 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 是一个强大的文本处理工具,同时也支持数学运算,适合进行复杂处理。
语法
awk "BEGIN {print 表达式}"
特性
支持整数和浮点数运算。
灵活且功能强大。
示例
a=10 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 外部命令,支持浮点型,但是性能略低
参考我师兄链接
我清风与诸君共勉,共创辉煌篇章