繁体   English   中英

不用空格重写Shell脚本

[英]Rewrite shell script without whitespace

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

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

该脚本运行另一个程序,并且失败,如果其返回码为6。

背景

我在pam_exec.so和另一个控制对系统访问的程序中一起使用。 它与安全性无关,如果其他脚本(rc 6除外)出现故障,我想确保对系统的访问。 另一个程序有点脆弱,可能由于各种原因而中断,或者由于安装混乱而无法使用。 我目前使用包装器脚本,但是再次需要部署该脚本,并且我需要确保该脚本的部署与pam配置一致。 我希望在pam配置中使用独立的便携式解决方案。

不幸的是1) pam_exec.so不在乎它调用的程序的返回代码,2)pam.d配置解析器不在乎引号,它只是将参数用" \\n\\t" pam_exec.so ,所以我不能采用

... 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM