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"

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

相关推荐
DO_Community14 分钟前
Omarchy 将研发基础设施迁移至 DigitalOcean 云平台
linux·人工智能·llm·agent·omarchy
透明的玻璃杯15 分钟前
热键驱动 Hotkey Features Integration v9.x(14MB)
笔记
米糕闯编程25 分钟前
鱼香ros2(三)Linux操作总结
linux·机器人·ros2
一技安身43 分钟前
【信创】银河麒麟V10服务器使用安装光盘Packages自建本地yum源
linux·运维·服务器
上海心泾国际物流有限公司1 小时前
我在几个医疗器械仓库记下的一组温湿度数据
经验分享·笔记·学习·健康医疗·交通物流
码农客栈1 小时前
Linux I2C驱动实验
linux·运维·驱动开发
OpenPomeloxCommunity3 小时前
Linux 驱动基础(二):驱动自动加载的设计与实现
linux
yyk333244 小时前
Linux常见的基础命令
linux·运维·服务器
LuminousCPP4 小时前
数据结构-排序(三):快速排序进阶|挖坑法、双指针交换与手动栈非递归实现
c语言·数据结构·笔记·算法·排序算法
chushiyunen4 小时前
mockito笔记
java·开发语言·笔记