Input standar juga dapat diwakili oleh file perangkat khusus /dev/stdin
, jadi gunakan itu sebagai nama file.
file="/dev/stdin"
./myscript < "$file"
Pertama-tama stdin adalah deskriptor file 0 (nol) daripada 1 (yang merupakan stdout).
Anda dapat menggandakan deskriptor file atau menggunakan nama file secara kondisional seperti ini:
[[ some_condition ]] && exec 3<"$filename" || exec 3<&0
some_long_command_line <&3
Perhatikan bahwa perintah yang ditampilkan akan mengeksekusi exec
kedua jika kondisi salah atau exec
pertama gagal. Jika Anda tidak ingin potensi kegagalan melakukan itu maka Anda harus menggunakan if
/ else
:
if [[ some_condition ]]
then
exec 3<"$filename"
else
exec 3<&0
fi
tetapi pengalihan selanjutnya dari deskriptor file 3 akan gagal jika pengalihan pertama gagal (setelah kondisinya benar).
(
if [ ...some condition here... ]; then
exec <$fileName
fi
exec ./myscript
)
Dalam subkulit, alihkan stdin secara kondisional dan jalankan skrip.
Bagaimana cara saya grep secara rekursif?
API Linux untuk menentukan soket yang dimiliki oleh suatu proses