根据 bash 手册页:
重定向运算符
Run Code Online (Sandbox Code Playgroud)[n]<&digit-
如果未指定,则将文件描述符移动
digit
到文件描述符n
或标准输入(文件描述符 0)n
。digit
复制到 后关闭n
。
将文件描述符“移动”到另一个是什么意思?这种做法的典型情况是什么?
使用 sed,我想用双引号之外的每个逗号替换管道。
这样 .csv 文件中的这一行:
John,Tonny,"345.3435,23",56th Street
Run Code Online (Sandbox Code Playgroud)
将转换为:
John|Tonny|"345.3435,23"|56th Street
Run Code Online (Sandbox Code Playgroud)
你能帮我处理正则表达式吗?
我想知道为什么当我们引用关闭的 stderr 时 bash 不显示错误消息。当涉及到其他文件描述符时,如果我们想要复制它们,就必须打开它们。在这种情况下,Stderr 似乎有点特殊:
$ cat file_1
echo Test1 1>&5
$ cat file_2
echo Test2 1>&2
$ ./file_1 5>&-
./file_1: line 1: 5: Bad file descriptor
$ ./file_1 5>&1
Test1
$ ./file_2 2>&-
$ #NO ERROR and no output!
$ ./file_2
Test2
Run Code Online (Sandbox Code Playgroud)
为什么外壳允许它?