不带空格重写 shell 脚本

Rewrite shell script without whitespace

是否可以在不使用空格、制表符或换行符的情况下编写这样的 shell 脚本:

/path/to/foo; test $? -ne 6

该脚本运行另一个程序并失败,前提是其 return 代码为 6。

背景

我在 pam_exec.so 和另一个控制系统访问的程序中一起使用它。它与安全性无关,我想确保在其他脚本失败(rc 6 除外)时可以访问系统。另一个程序有点脆弱,可能由于各种原因而中断,或者由于安装混乱而无法使用。我目前使用包装器脚本,但它又需要部署,我需要确保该脚本的部署与 pam 配置一致。我更喜欢 pam 配置中的独立便携式解决方案。

不幸的是 1) pam_exec.so 不关心它调用的程序的 return 代码,并且 2) pam.d 配置解析器不关心引号,它只是按 " \n\t" 拆分参数,所以我不能使用

... pam_exec.so /bin/bash -c "/bath/to/foo; test$? -ne 6"

我很好奇是否有一种方法可以重新表述它,使其不需要空格并且可以在此处使用。

使用算术语句,在解析过程中需要较少的空格。

bash -c '/path/to/foo;(($?!=6))'

与其处理空格,不如创建一个包装脚本:

#!/bin/bash
# /usr/local/sbin/foo-wrapper
/bath/to/foo
test $? -ne 6

pam 配置:

... pam_exec.so /usr/local/sbin/foo-wrapper