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"

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

相关推荐
张火火isgudi12 小时前
fedora43 安装 nvidia 驱动以及开启视频编解码硬件加速
linux·运维·视频编解码·nvidia
TheSumSt12 小时前
Python丨课程笔记Part3:语法进阶部分(控制结构与基础数据结构)
数据结构·笔记·python
IT199513 小时前
Qt笔记-使用SSH2进行远程连接linux服务器并上传文件
linux·服务器·笔记
XXYBMOOO13 小时前
内核驱动开发与用户级驱动开发:深度对比与应用场景解析
linux·c++·驱动开发·嵌入式硬件·fpga开发·硬件工程
lengjingzju15 小时前
一网打尽Linux IPC(三):System V IPC
linux·服务器·c语言
大聪明-PLUS15 小时前
如何编写你的第一个 Linux 内核模块
linux·嵌入式·arm·smarc
利刃大大15 小时前
【2025年度创作总结】从笔记到实践,从思考到生活融合
笔记·生活
知识分享小能手15 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04文件压缩与解压缩知识点详解(12)
linux·学习·ubuntu
航Hang*15 小时前
Photoshop 图形与图像处理技术——第1章:数字图像基本知识
图像处理·笔记·ui·photoshop
用户61354114601615 小时前
Krb5-libs-1.18.2-5.ky10.x86_64.rpm 安装失败怎么办?附详细步骤
linux