使用带有 $_1/ 的命令 test

使用带有 $_1/ 的命令 test

我试图理解下面的命令,特别是粗体部分。

我明白第二行是什么。它正在测试文件是否存在,如果不存在,则会创建一个文件,但是什么是$_1/意思是?

test "$1" = "0" && exit
test -f $_1/samplefile || touch $_1/samplefile

答案1

$_1意思是“扩展变量_1”。由于未设置此变量,因此它将扩展为空。可能有人犯了一个错误。

人的想法可能$_1与 相同${_}1,即$_,(这是上一个命令的最后一个参数),与数字 相连1。但它并不相同,如下所示:

$ cat tst.bash
#!/bin/bash
test "$1" = "0" && exit
echo $_
test "$1" = "0" && exit
echo $_1
test "$1" = "0" && exit
echo ${_}1
$ ./tst.bash
0

01

如果您提供除数字 0 之外的任何内容作为脚本的参数(在上面的示例中,我根本没有提供任何参数),则失败test并且exit不会触发。因此,对于每个echo,最后执行的命令是

test "$1" = "0"

,其最后一个参数是0。因此,$_展开为0${_}1展开为01$_1展开为 空字符串。

答案2

感谢你们。我认为写这个的人可能犯了一个错误。建议检查是否存在文件,如果不存在则创建文件。所以,经过一番尝试,我使用了test -f $(pwd)”/samplefile” || touch samplefile并且有效。我只是感到困惑,因为所有命令对我来说都是新的,我认为这可能$_1/意味着什么。太感谢了! :-)

相关内容