Я сделал следующие попытки .. напрасно:
- hello.sh используя "test -f"
#! /bin/bash
test -f $1 && exit 1 || echo "hello" > $1
К сожалению, $ ./hello.sh /dev/stdout > non_existent
не пишет.
- hello2.sh с использованием "set -C"
#! /bin/bash
set -C; echo "hello" > $1
Кроме того, $ ./hello2.sh /dev/stdout > non_existent
по-прежнему не работает.
Я предполагаю, что при перенаправлении bash вызывает freopen("/dev/stdout", "w", $1)
, что ошибочно делает / dev / stdout похожим на существующий обычный файл.
Как мне решить эту проблему?