我有一个文件(称为文本),其中包含两个字符串字段(用空格分隔),如下所示:
1.2.3 version1
当我如下使用 set 命令时,第一个字段位于 $1 中,第二个字段位于 $2 中。有人能解释一下这个命令的作用吗?特别是 < 做什么?这是输入重定向吗?
set -- $(<text)
答案1
该命令结合了两个相当特殊的技巧......
放 -
通常set
用于配置 shell 选项(请参阅 shell 的手册页)。一个特殊情况是set --
。这用于设置位置参数。不幸的是,我已经忘记了那是什么,但我曾经读到过一个无法通过其他方式很好解决的问题。
$(< 文件)
$(command)
是命令替换:shell 收集 stdout 上的输出,并$(command)
在执行命令行时替换为该输出。如果您需要文件的内容,可以这样做:$(cat file)
.$(< file)
只是它的一个简短版本,节省了不必要的过程(cat
)。