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