可以将此powershell脚本转换为bash脚本吗?动态bash命令?

发布于 2025-01-22 23:42:39 字数 1264 浏览 0 评论 0原文

param(
[string]$pod,
[string]$username,
[string]$pass,
[string]$environment,
[string]$delay,
[string]$utype,
[string]$etype,
[string]$url
)


$cmd = "protactor  " + $f.name + " ";
    if($pod -ne ""){
    $cmd+=" --params.pod=$pod";
    }
    if($username -ne ""){
    $cmd+=" --params.user=$username";
    }
    if($pass -ne ""){ 
    $cmd+=" --params.pass=$pass"
    }
    if($utype -ne ""){ 
        $cmd+=" --params.type=$utype"
    }
    if($url -ne ""){ 
        $cmd+=" --params.url=$url"
    }
 
    if($etype -ne ""){ 
        $cmd+=" --params.type=$etype"
    }
    
    $cmd
    Invoke-Expression -Command:$cmd

有没有办法将上面的PowerShell脚本转换为bash脚本?非常感谢您,非常感谢

我做了这样的事情,但是我无法动态构建命令并在结尾进行调用,例如在Powershell中,我的问题是,如果没有通过论证,我可以动态地构建命令,我不'希望将其包含在命令中,例如,如果我不通过'-p xxx',那么我不想要' - params.pass = $ password'在bash的命令中显示。

 #!/bin/bash
    
    # how to use 
    #  ./protactor-batch.sh -e xxx -u xxx -p xxx
    while getopts u:p:e:s: flag
    do
        case "${flag}" in
            u) username=${OPTARG};;
            p) password=${OPTARG};;
            e) pod=${OPTARG};;
            s) sec=${OPTARG};;
        esac
    done
protractor $f --params.pod=$pod --params.user=$username --params.pass=$password
param(
[string]$pod,
[string]$username,
[string]$pass,
[string]$environment,
[string]$delay,
[string]$utype,
[string]$etype,
[string]$url
)


$cmd = "protactor  " + $f.name + " ";
    if($pod -ne ""){
    $cmd+=" --params.pod=$pod";
    }
    if($username -ne ""){
    $cmd+=" --params.user=$username";
    }
    if($pass -ne ""){ 
    $cmd+=" --params.pass=$pass"
    }
    if($utype -ne ""){ 
        $cmd+=" --params.type=$utype"
    }
    if($url -ne ""){ 
        $cmd+=" --params.url=$url"
    }
 
    if($etype -ne ""){ 
        $cmd+=" --params.type=$etype"
    }
    
    $cmd
    Invoke-Expression -Command:$cmd

is there a way to convert above powershell script to bash script? thank you so much, much appreciated

I have done something like this but I am unable to build command dynamically and invoke it at the end like in powershell, my question is can I build a command dynamically if an argument is not passed, I don't want that to be included in the command, for example if I don't pass '-p xxx' then I don't want '--params.pass=$password' show up in the command in bash.

 #!/bin/bash
    
    # how to use 
    #  ./protactor-batch.sh -e xxx -u xxx -p xxx
    while getopts u:p:e:s: flag
    do
        case "${flag}" in
            u) username=${OPTARG};;
            p) password=${OPTARG};;
            e) pod=${OPTARG};;
            s) sec=${OPTARG};;
        esac
    done
protractor $f --params.pod=$pod --params.user=$username --params.pass=$password

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

还如梦归 2025-01-29 23:42:39

这似乎对我有用

``

#!/bin/bash
    
    # how to use 
    #  ./protactor-batch.sh -e xxx -u xxx -p xxx
    while getopts u:p:e:s: flag
    do
        case "${flag}" in
            u) username=${OPTARG};;
            p) password=${OPTARG};;
            e) pod=${OPTARG};;
            s) sec=${OPTARG};;
        esac
    done

    cmd1="protractor " ;

  if [ ! -z "$username" ]
  then
    cmd1+=" --params.username=$username";
  fi
    
    $cmd1

``

this seems to work for me

`

#!/bin/bash
    
    # how to use 
    #  ./protactor-batch.sh -e xxx -u xxx -p xxx
    while getopts u:p:e:s: flag
    do
        case "${flag}" in
            u) username=${OPTARG};;
            p) password=${OPTARG};;
            e) pod=${OPTARG};;
            s) sec=${OPTARG};;
        esac
    done

    cmd1="protractor " ;

  if [ ! -z "$username" ]
  then
    cmd1+=" --params.username=$username";
  fi
    
    $cmd1

`

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文