我试图理解下面的命令,特别是粗体部分。
我明白第二行是什么。它正在测试文件是否存在,如果不存在,则会创建一个文件,但是什么是$_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/
意味着什么。太感谢了! :-)