文件和標準輸入我想知道如果讀我可以寫一個接受兩個參數的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
交織含量(從文件的一行,一個來自標準輸入,來回切換)?連接它們?更具體一點 - 我們*可能*有一個重複,一旦足夠的細節給出。 –