“ - ”是bash中stdout的快捷方式吗?如果不是什么意思?例如,
wget -q -O - $line
stdin怎么样?
谢谢和问候!
答案 0 :(得分:15)
据我所知,bash
并未涉及破折号的使用。当在命令行上替换输入或输出文件名时,许多UNIX命令行实用程序的惯例是-
作为stdin
或stdout
的占位符。
对于使用操作数来表示要打开以进行读取或写入的文件的实用程序,“ - ”操作数应仅用于表示标准输入(或从上下文中清除指定输出文件时的标准输出) )。
答案 1 :(得分:8)
-
只是wget
(以及其他一些工具)使用的约定,表明输出将被发送到stdout。它不是bash的一部分,但它是一个由命令本身处理的特殊情况(如果您认为是这种情况,某些命令将最终创建“-
”文件)。您可以将其替换为/dev/stdout
(并且在适当时通常可以使用/dev/stdin
作为输入文件。)
答案 2 :(得分:2)
-
在bash中并不特别,它只是作为程序的参数给出。那么它取决于程序如何解释-
。
通常它表示应该使用stdin或stdout,具体取决于上下文。
答案 3 :(得分:1)
这取决于程序。通常,-
表示“发送到输出”。
使用read
:
#!/bin/bash
echo -n "What's your name? "
read var1
echo "hello $var1"