小编jua*_*eon的帖子

bash:如何在进程替换中传播错误?

我希望我的 shell 脚本在使用它们执行的命令失败时失败。

通常我这样做:

set -e
set -o pipefail
Run Code Online (Sandbox Code Playgroud)

(通常我set -u也会添加)

问题是上述方法都不适用于进程替换。此代码打印“ok”并以返回代码 = 0 退出,而我希望它失败:

#!/bin/bash -e
set -o pipefail
cat <(false) <(echo ok)
Run Code Online (Sandbox Code Playgroud)

除了进程替换之外,是否有任何等同于“pipefail”的东西?有没有其他方法可以将命令的输出作为文件传递给命令,但只要这些程序中的任何一个失败就会引发错误?

一个穷人的解决方案是检测这些命令是否写入 stderr(但某些命令在成功的情况下写入 stderr)。

另一个更符合 posix 的解决方案是使用命名管道,但我需要将那些使用进程替换的命令作为从编译代码动态构建的单行程序启动,并且创建命名管道会使事情复杂化(额外的命令,捕获错误删除它们等)

bash process-substitution

27
推荐指数
2
解决办法
3208
查看次数

即使使用 showkey 也无法识别键盘按键

我在随身携带的笔记本电脑中使用 Ubuntu 12.04,并与不同的物理键盘一起使用(因为我对笔记本电脑键盘感到不舒服)

对于这些键盘之一 (Dell SK-8135),无法识别 Super 和 Menu (?) 键:

  • xev 完全忽略这 2 个按键的按键

  • showkey -s(在控制台中以 root 身份运行)也完全忽略按键

我知道键盘上的这些键可以在其他计算机上使用(我无法在另一台基于 Linux 的计算机上尝试它们)。我 80% 确信这个特殊的键盘可以与我曾经拥有的旧版本的 Linux 一起正常工作(它可能是一个类似的键盘)。

我也尝试过类似的事情,但没有成功

setxkbmap  -model dellsk8135
setxkbmap  -model dellsk8135 -print | xkbcomp - $DISPLAY
Run Code Online (Sandbox Code Playgroud)

任何调试线索表示赞赏;我不知道如何转到“showkey”命令下方。

keyboard-shortcuts keyboard keyboard-layout key-mapping

5
推荐指数
0
解决办法
2286
查看次数