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"

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

相关推荐
LinXunFeng16 小时前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
zzzzzz3101 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode1 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒3 天前
TShark:Wireshark CLI 功能
linux
A小辣椒3 天前
TShark:基础知识
linux
AlfredZhao3 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao4 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334664 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪4 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql