【问题标题】:Run perl script in bash array在 bash 数组中运行 perl 脚本
【发布时间】:2020-04-18 03:58:04
【问题描述】:

我需要在 bash 数组中运行一个 perl 脚本,该脚本将根据您提供的字符串返回某些值。 perl 脚本本身接受一个用户和一个字符串,它会根据你给它的字符串返回值。例如。这就是 perl 脚本的工作原理

$ perlscript.pl user disabled

这将运行 perl 脚本并返回用户是否被禁用。它会接受大约 5 个字符串。我想要做的是像这样在 bash 数组中运行该脚本

declare -a perlScriptArray=('disabled' 'fullName' 'email' 'sponsor' 'manager')

显然这是不对的,只会返回您提供的字符串。我想要的是 bash 脚本中的类似内容。

declare -a perlScriptArray=('perlScript.pl disabled' 'perlScript.pl fullName' 'perlScript.pl email' 'perlScript.pl sponsor' 'perlScript.pl manager'

但是,这不起作用。 bash 脚本本身将用户作为 $1 并将其传递给 perl 脚本,该脚本将运行您针对 perl 脚本提供的字符串。我该怎么做呢?这甚至可能吗?

【问题讨论】:

    标签: bash perl command-substitution


    【解决方案1】:

    循环遍历每个元素调用脚本的数组

    declare -a perlScriptArray=('disabled' 'fullName' 'email' 'sponsor' 'manager')
    user=$1
    
    for option in "${perlScriptArray[@]}"
    do
        perlScipt.pl "$user" "$option"
    done
    

    【讨论】:

    • 谢谢,这本身就有效。然而,它是一个更大的脚本的一部分。我希望它返回值然后退出脚本。这就是我所拥有的:if [ ! $# == 2 ] then for option in "${perlScriptArray[@]}" do $perlScript "$1" "$option" exit done fi 但是,它不起作用。有什么想法吗?
    • 不要尝试在 cmets 中放入多行脚本,没有格式。如果您需要澄清,请将其添加到问题中。
    • 但这并没有什么意义。如果你在那里退出脚本,它只会运行第一个命令,而不是整个数组。
    • 如果任何命令出错,您可能想停止循环? perlScript.pl "$user" "$option" || exit
    猜你喜欢
    • 2013-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2013-12-25
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多