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
数组来访问传递给脚本的参数。$argv0
是expect
脚本特有的用法,它用于获取脚本的名称,类似于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"
这段脚本会输出传递给脚本的参数数量。