linux - 如何使用 bash 写入除现有常规文件之外的任何文件?
问题描述
我做了以下尝试..徒劳无功:
- 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 callsfreopen("/dev/stdout", "w", $1)
会错误地使/dev/stdout看起来像一个现有的常规文件。
我该如何解决这个问题?
解决方案
是的,只需在(仅)测试期间关闭标准文件描述符:
$ test -f /dev/stdout <&- >&- 2>&-
$ echo $?
1
推荐阅读
- swiftui - SwiftUI 将当前视图中导航栏按钮的文本标题更改为“后退”,而不是从前一个视图标题继承文本
- c - 如何生成 GSL GNU
没有 SUDO 权限? - ssh - 简化 SCP - 部分通过反向隧道 - 三个节点之间的连接
- firebase - Firebase 云功能 paypal 适用于本地主机,但不适用于服务器
- python - 将文件从 filedialogue 传递到另一个函数 tkinter
- angular - 如何让 mat-select 显示适当的选项?
- oracle - 还原表空间 USERS 不起作用。甲骨文备份
- c++ - UXTheme:绘制无边界组合框雪佛龙
- javascript - 通过反应检测对子组件的关注
- java - 通过引用传递——java中的“hack”不再工作了?