Linux笔记之bash和expect脚本中的$和$argv参数匹配

Linux笔记之bash和expect脚本中的 和 和 和argv参数匹配

------ 杭州 2024-02-03

code review!

文章目录

  • [Linux笔记之bash和expect脚本中的 和 和 和argv参数匹配](#Linux笔记之bash和expect脚本中的 和 和 和argv参数匹配)

1.bash脚本

在Linux的bash脚本中,参数和脚本文件名的变量使用方式与你提供的稍有不同。在bash中,脚本参数是通过位置参数来访问的,位置参数的变量名是由一个美元符号$后接一个数字来表示的。第一个参数是$1,第二个参数是$2,依此类推。

脚本文件名可以通过特殊的shell参数$0来访问。所以,对于你的问题:

  • $argv0不是标准的bash变量。脚本文件名是通过$0来访问的。
  • $argv1也不是标准的bash变量。第一个参数是通过$1来访问的。

这里是一个简单的例子来展示如何在bash脚本中使用这些参数:

bash 复制代码
#!/bin/bash

echo "脚本文件名: $0"
echo "第一个参数: $1"

如果你将上面的脚本保存为script.sh并执行bash script.sh arg1,输出将会是:

复制代码
脚本文件名: script.sh
第一个参数: arg1

请注意,当你在子shell中执行脚本或者通过链接执行脚本时,$0的值可能会有所不同,它可能包含相对路径或绝对路径,具体取决于如何调用脚本。

2.expect脚本

expect脚本中,确实使用$argv数组来访问传递给脚本的参数。$argv0expect脚本特有的用法,它用于获取脚本的名称,类似于bash中的$0。而$argv则是一个数组,包含所有传递给脚本的参数。

expect中:

  • $argv0是脚本自身的文件名。
  • $argv是一个数组,包含了所有的参数。因此,$argv的第一个元素(索引从0开始)即$argv 0是第一个参数,$argv 1是第二个参数,以此类推。

这里有一个简单的expect脚本示例,展示了如何使用这些变量:

tcl 复制代码
#!/usr/bin/expect

puts "脚本文件名: $argv0"
puts "第一个参数: [lindex $argv 0]"
puts "第二个参数: [lindex $argv 1]"

假设将此脚本保存为script.exp,并且调用expect script.exp arg1 arg2,它将输出:

复制代码
脚本文件名: script.exp
第一个参数: arg1
第二个参数: arg2

expect中,你还可以使用$argc来获取传递给脚本的参数数量。

tcl 复制代码
#!/usr/bin/expect

puts "参数个数: $argc"

这段脚本会输出传递给脚本的参数数量。

相关推荐
kymjs张涛9 小时前
OpenClaw 学习小组:初识
android·linux·人工智能
程序设计实验室11 小时前
经历分享,发现挖矿木马后,服务器快速备份与重装(腾讯云平台)
linux
Miku1613 小时前
OpenClaw-Linux+飞书官方Plugin安装指南
linux·人工智能·agent
Miku1613 小时前
OpenClaw 接入 QQ Bot 完整实践指南
linux·人工智能·agent
Yogurt_cry18 小时前
[树莓派4B] 闲置近10年的爱普生 L310 打印机爆改无线打印机
linux·物联网·树莓派
Johny_Zhao2 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield3 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
齐生13 天前
iOS 知识点 - 渲染机制、动画、卡顿小集合
笔记