在bash中,变量-表示命令的stdin,对于管道到命令非常有用。我想知道windows批处理文件中是否有类似的文件,但似乎找不到答案。
以下是我传统上在绝对必要时所做的工作(最有用的是if
语句):
<command> | set /p tmpvar=
if "%tmpvar%"=="whatever" rem stuff
我觉得像在bash中那样做会更快更容易。下面是bash中的一个等效脚本,我希望它能更简单一些,比如这个windows批处理脚本(不需要dos兼容性)。
<command> | if ("-" == "whatever" ) # stuff
有没有比上面第一个例子更简单的例子?这会让事情变得容易得多。
最佳答案
在bash中,变量-表示stdin
实际上不是这样的。-
作为标准输入/输出的简写,在unix命令中是一种约定,但是命令本身解释它;shell与之无关。echo -
只打印一个破折号。
在dos/windows中,最接近于此约定的是特殊文件名CON
,它被解释为控制台。不过,我认为它对管道没有帮助——就像在Unix上一样,命令本身应该有某种方式告诉它们从标准输入读取数据。