文件和标准输入我想知道如果读我可以写一个接受两个参数的shell脚本同时,一个从一个文件,从标准输入了一个又一个。你能举一些例子吗?从猛砸
我想
while read line
do
echo "$line"
done < "${1}" < "{/dev/stdin}"
但是,这是行不通的。
文件和标准输入我想知道如果读我可以写一个接受两个参数的shell脚本同时,一个从一个文件,从标准输入了一个又一个。你能举一些例子吗?从猛砸
我想
while read line
do
echo "$line"
done < "${1}" < "{/dev/stdin}"
但是,这是行不通的。
您可以使用cat -
或cat /dev/stdin
:
while read line; do
# your code
done < <(cat "$1" -)
或
while read line; do
# your code
done < <(cat "$1" /dev/stdin)
,或者,如果你想从通过命令行以及标准输入通过了所有文件的读取,你可以这样做:
while read line; do
# your code
done < <(cat "[email protected]" /dev/stdin)
参见:
我需要bash脚本同时接受两个参数。我习惯第二个例子没有工作。我创建了test.txt,然后我使用bash myprogram.sh test.txt来做任何事情。但我只从文件中获得内容,而不是从标准输入(任何东西) – Juan
@Juan什么是什么?你想'stdin'文字被推断为标准输入? – HuStmpHrrr
已更新答案以照顾通过命令行传递的所有参数(文件名)。 – codeforester
This topic似乎是有帮助的位置:
{ cat $1; cat; } | while read line
do
echo "$line"
done
或者只是
cat $1
cat
如果你正在做的是打印的内容
'猫'$ 1“',你的意思是。否则,具有空格的文件名将不可用。而你只需要cat'的'一个实例,作为标准输入可以作为'-'被称为如下:'猫“$ 1” -' –
顺便说一句,我建议做'<<(猫“$ 1” - ) '而不是'猫'$ 1“ - |同时避免[BashFAQ#24](http://mywiki.wooledge.org/BashFAQ/024)。 –
什么是“从一个文件,从标准的说法”是什么意思?你的意思是读取作为参数传递的文件中的数据? – m0skit0
交织含量(从文件的一行,一个来自标准输入,来回切换)?连接它们?更具体一点 - 我们*可能*有一个重复,一旦足够的细节给出。 –