Что такое эквивалент fd / 2 для Windows? - PullRequest
1 голос
/ 08 марта 2020

Например, Linux можно ссылаться на stderr как fd / 2 из скрипта awk. Пример:
if(system("test -e " myfile) != 0) myfile = "fd/2"
Мне нужно что-то, что также работает на windows - что бы там было myfile = fd/2, пожалуйста? Кажется, я понял, что могу использовать exist для проверки существования файла. Спасибо.

1 Ответ

0 голосов
/ 08 марта 2020
D:\TEMP>type error.txt
The system cannot find the file specified.

D:\TEMP>dir nonexistingfile.txt 2>error.txt
 Volume in drive D is HDD
 Volume Serial Number is D46B-804B

 Directory of D:\TEMP


D:\TEMP>type error.txt
File Not Found

D:\TEMP>

см. microsoft-docs

РЕДАКТИРОВАТЬ: в соответствии с документами, связанными @Raymond, я видел, что возможно перенаправить ошибку при Windows.

D:\TEMP>del error

D:\TEMP>echo hallo | gawk "{ print \"Serious error detected!\" > \"/dev/stderr\"; print $0 }" 2>error
hallo

D:\TEMP>type error
Serious error detected!

или, более условно:

D:\TEMP>del error

D:\TEMP>gawk "BEGIN{ for (i=1; i<=4; i++) { if (i%2==0) { myfile=\"/dev/stderr\" } else { myfile=\"/dev/stdout\" }; print i >myfile }}" 2>error
1
3

D:\TEMP>type error
2
4

D:\TEMP>
...