【问题标题】:Proper syntax for bash script linebash 脚本行的正确语法
【发布时间】:2019-11-11 17:41:10
【问题描述】:

编写脚本以从服务器列表中检索各种环境参数。我的脚本在运行时不返回任何值,但相同的命令会在脚本之外返回所需的值。

我尝试使用几种变体来检索相同的数据。由于我有权访问的帐户受到限制,其中一个命令失败。第二个命令有效,但只有在提升模式下执行。

访问被拒绝(pwdx 受限)失败

dzdo pgrep -f /some/path | xargs pwdx

这在脚本之外有效,但在脚本中不返回值

dzdo /bin/readlink -e /proc/"$(pgrep -f /some/path)"/cwd

当使用“bash -x”执行我的脚本时,我看到“readlink”代码是空白的。

理想情况下,我想返回运行“pgrep”命令的进程的 PID 和路径。我可以单独使用“readlink”版本返回的路径。最终目标是从多个服务器收集信息以用于审计目的。 (版本等)

我是否对“readlink”命令使用了错误的语法?我对编写 bash 脚本还很陌生,所以我很感激任何指导,以帮助理解如果我在脚本和命令行中使用命令,什么时候该做什么。

【问题讨论】:

    标签: bash


    【解决方案1】:

    如果pwdx 是受限程序,您需要使用dzdo 运行它,而不是pgrep

    pgrep -f /some/path | dzdo xargs pwdx
    

    【讨论】:

    • 嗯,这可能是一个面对面的时刻。谢谢,这是我没有尝试过的。你能告诉我为什么 "dzdo /bin/readlink -e /proc/"$(pgrep -f /some/path)"/cwd" 没有返回 "$(pgrep -f /some/path)" 吗?
    • 我不确定,我想不出为什么pgrep 在命令替换中的工作方式会有所不同。
    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 2021-01-14
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2012-02-07
    相关资源
    最近更新 更多