个人工作室网站,app生成链接,免费学做网站,做整体衣柜宣传海报的网站声明#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下#xff0c;如涉及侵权马上删除文章#xff0c;笔记只是方便各位师傅的学习和探讨#xff0c;文章所提到的网站以及内容#xff0c;只做学习交流#xff0c;其他均与本人以及泷羽sec团队无关#…声明 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下如涉及侵权马上删除文章笔记只是方便各位师傅的学习和探讨文章所提到的网站以及内容只做学习交流其他均与本人以及泷羽sec团队无关切勿触碰法律底线否则后果自负有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec
shell编程3参数传递算术运算
参数传递
脚本程序传递参数如何实现 创建一个a.sh内容如下如下
echo 执行的文件名是$0
echo 第一个参数是$1
echo 传递的参数作为一个字符串显示$*
echo 传递的参数独立作为每个字符串显示$
echo 传递到脚本的参数个数是$#
echo 最后命令的退出状态$?
echo 脚本运行的当前进程ID是$$$0这个变量包含了当前执行脚本的名称。如果脚本是通过完整路径调用的它将包含整个路径。$1, $2, ...分别表示传递给脚本的第一个、第二个等参数。可以一直递增到脚本接收到的最后一个参数。$*当未被双引号包围时$*与$的行为相同都是将所有位置参数视为一个字符串。但当它们被双引号包围时$*会将所有参数视为单个以首个字符为分隔符通常是空格连接起来的字符串而$则会保持每个参数独立。$与$*类似但在被双引号包围时它将每个参数都作为独立的字符串处理。$#表示传递给脚本或函数的参数数量。$?存储最近一次执行的前台管道的退出状态。通常0 表示成功非零值表示错误。$$表示当前shell进程的PID进程ID。
更多的Shell特殊变量 除了上述变量之外还有其他一些有用的特殊变量
$_这是上一个命令执行的最后一个参数。这在交互式shell中特别有用。$!最近一个后台进程中运行的作业的PID。$-显示当前shell选项设置的状态。$IFSInternal Field Separator定义了用于分割单词的字符默认为空格、制表符和换行符。这对于控制如何解析输入非常关键。$BASH_VERSION如果你使用的是Bash shell这个变量保存了当前Bash版本的信息。$HOME用户的家目录。$PWD当前工作目录。$SECONDS自脚本开始执行以来经过的秒数。$RANDOM生成一个随机整数。每次引用该变量时都会产生一个新的随机数。$LINENO当前正在执行的代码行号。$BASH_SOURCE对于函数或脚本提供了一个数组其中包含了调用栈中每个元素的文件名。$FUNCNAME如果在一个函数内该变量包含了函数的名字。 $*与$
当未被双引号包围时$*与$的行为相同都是将所有位置参数视为一个字符串。但当它们被双引号包围时$*会将所有参数视为单个以首个字符为分隔符通常是空格连接起来的字符串而$则会保持每个参数独立。 新建一个b.sh
#!/bin/bash
echo Using \$*: $*
echo Using \\$*\: \$*\
echo Using \$: $
echo Using \\$\: \$\当你运行这个脚本并传入参数./script.sh hello world goodbye时输出将会是这样的
Using $*: hello world goodbye # 参数被当作单个字符串处理Using $*: hello world goodbye # 所有参数作为一个字符串中间用空格分割Using $: hello world goodbye # 参数被视为独立的字符串Using $: hello world goodbye # 每个参数都被独立地引用
算术运算
常见的命令
1. 使用 expr 命令
expr 是一个非常基础但功能有限的工具用于执行简单的算术运算。
result$(expr 5 3)
echo $result # 输出 8注意使用 expr 时操作符和数字之间需要有空格。
2. 使用 $((...)) 语法
这是一种更现代且更简洁的方法可以直接在变量赋值或命令替换中使用。
result$((5 3))
echo $result # 输出 8# 或者直接输出
echo $((5 * 3)) # 输出 153.使用 let 命令
let 可以用来执行整数算术表达式并将结果存储到变量中。
let result53
echo $result # 输出 84. 使用 bc 命令
bc 是一个强大的计算器支持浮点运算和复杂的数学函数。
result$(echo scale2; 5 / 3 | bc)
echo $result # 输出 1.67 (保留两位小数)# 执行更复杂的计算
result$(echo sqrt(9) | bc -l)
echo $result # 输出 3.00000000000000000000其中-l 选项加载了标准数学库允许进行更高级的数学运算。
5. 使用 awk
awk 不仅是一个文本处理工具也提供了丰富的数学运算能力。
result$(awk BEGIN{print 53})
echo $result # 输出 8# 浮点运算
result$(awk BEGIN{printf %.2f\n, 5/3})
echo $result # 输出 1.676. 使用 declare -i 来定义整数变量
这可以让你对变量进行直接的算术运算而不需要额外的命令。
declare -i num5
num3
echo $num # 输出 8以expr为例演示加减乘除取模
注意符前后都需要空格隔开 -
\* 转义一下linux的*代表任意
/
%\( \) 括号需要转义如
expr 6 \* 6(乘法是用\*,python.直接*就行了 要用\进行转义)复杂一些的运算 注意括号需要转义并且前后需要空格