考虑下面这个非常简单的bash脚本:
#!/bin/bash
cat > /tmp/file它会将你的管道重定向到一个文件中。例如:
echo "hello" | script.sh"hello“将出现在文件/tmp/file中。这很管用..。但似乎应该有一种不使用"cat“的本地bash方式来实现这一目的。但我搞不懂。
注意:
发布于 2016-03-30 15:46:44
我不认为有从stdin到EOF的内置内容,但您可以这样做:
#!/bin/bash
exec > /tmp/file
while IFS= read -r line; do
printf '%s\n' "$line"
done发布于 2017-08-01 17:28:38
你可以简单地
cp /dev/stdin myfile.txt终止您的输入与Ctrl+D或Ctrl+Z和,中提琴!您可以使用stdin中的文本创建文件。
发布于 2016-03-30 16:27:56
另一种使用纯BASH的方法:
#!/bin/bash
IFS= read -t 0.01 -r -d '' indata
[[ -n $indata ]] && printf "%s" "$indata" >/tmp/fileIFS=和-d ''导致将所有stdin数据读入变量indata中。
在没有输入管道的情况下调用此脚本时,使用-t 0.01**:**的原因,则read将在可忽略的0.01秒延迟后超时。如果输入中有可用的数据,则将在indata变量中读取数据,并将其重定向到>/tmp/file。
https://stackoverflow.com/questions/36313562
复制相似问题