Linux $argv[1]和$1的概念

Linux $argv[1]和$1的概念,linux,shell,terminal,argv,Linux,Shell,Terminal,Argv,$argv[1]和$1之间有什么区别? $argv[1]和$argv[$1],哪个是正确的 我尝试了以下代码并获得了如下所述的输出: (一) 运行方式:bash logs.sh home 输出:用户主页在登录到系统时 (二) 运行方式:bash logs.sh home 输出:用户[1]在登录系统时 (三) 运行方式:bash logs.sh home 输出:用户[主页]在登录系统时 请澄清这些。如果是bash,我通常会说,玩它: > echo $argv[1] [1] > argv

$argv[1]
$1
之间有什么区别?
$argv[1]
$argv[$1]
,哪个是正确的

我尝试了以下代码并获得了如下所述的输出:

(一)

运行方式:
bash logs.sh home

输出:
用户主页在登录到系统时

(二)

运行方式:
bash logs.sh home

输出:
用户[1]在登录系统时

(三)

运行方式:
bash logs.sh home

输出:
用户[主页]在登录系统时


请澄清这些。

如果是bash,我通常会说,玩它:

> echo $argv[1]
[1]
> argv=blabla
> echo $argv[1]
blabla[1]
令牌
$argv[1]
被解析为
$argv
[1]
$argv
展开为变量
argv
值,而
[1]
保持原样。要通过索引访问数组,请使用
{}
,例如
${argv[1]}
。如您所见,bash中的数组从零开始索引:

> argv=(1 2 3)
> echo ${argv[1]}
2
变量
argv
在bash中不是变量的特殊名称,它没有特殊含义,也没有传递给脚本的位置参数集合。要访问参数,请使用
$1
访问第一个参数,
$2
访问第二个参数,使用
“$@”
将每个参数展开为单独的单词,
“$*”
将参数展开为单个单词,
$\code>获取参数的计数

$argv[$1]
也没有任何特殊意义。由于未设置
argv
变量,
$argv
将展开为零。脚本的第一个参数是
home
,因此
$1
扩展为
home
[
]
${…}
大括号之外没有特殊意义。
[
]
保持不变。因此,
$argv[$1]
展开如下

`$argv` + `[` + `$1` + `]`
`` + `[` + `home + `]`
`[home]`
您可以使用简单的函数测试
$1
变量:

> f() { echo $# 1:$1 2:$2 3:$3; }
> f home 
1 1:home 2: 3:
> f home kamil salini
3 1:home 2:kamil 3:salini

为什么这个标签是
linux内核
bash
也在其他操作系统上运行bash/shell中没有名为
argv
的变量,您的测试只是公开了它。(在您的测试中,将
$argv
替换为空字符串,结果将是一致的)。可能重复的原因是什么?这个答案有什么问题吗?(除了我的英语不好,很抱歉…)
> argv=(1 2 3)
> echo ${argv[1]}
2
`$argv` + `[` + `$1` + `]`
`` + `[` + `home + `]`
`[home]`
> f() { echo $# 1:$1 2:$2 3:$3; }
> f home 
1 1:home 2: 3:
> f home kamil salini
3 1:home 2:kamil 3:salini