以逗号分隔的字符串并将其添加到命令中

问题描述 投票:0回答:1

有人知道我在这里做错了吗? DIFFS包含第1行(foo/bar,baz/bat.php)后逗号分隔的文件路径列表。如果我只是将其复制粘贴到实际终端中第2行的其余部分,那么我会得到期望的结果。通过我所在的脚本执行此操作将永远运行,然后返回新的提示,没有错误。我已经尝试了一些方法,但是我的bash fu非常虚弱...:S

#!/bin/bash

...

function phpmd() {
    DIFFS=`git diff development --name-only | xargs | sed 's/ /,/g'`
    phpmd ${DIFFS} text phpmd.xml
}

...

case "$1" in
somecase)
   somecase ${@:2}
   ;;
phpmd)
   phpmd
   ;;
....
*)
   showUsage)
   ;;
esac

即使我只是在iTerm中这样做,它也可以工作。

prompt$ DIFFS=`git diff development --name-only | xargs | sed 's/ /,/g'`
prompt$ phpmd $DIFFS text phpmd.xml
/path/to/SomeController.php:58  The class SomeController has 1046 lines of code. Current threshold is 1000. Avoid really long classes.
...

编辑:如果需要的话,在较大的脚本中将其称为function。编辑了以上代码块以进行反映。我在独立的函数中使用了这两行,它们工作得很好,所以对于更广泛的脚本,这是我不了解的...

set -x输出:

+ set -x
++ git diff development --name-only
++ xargs
++ sed 's/ /,/g'
+ DIFFS=app/Http/Controllers/TrackerController.php,docker/kubernetes/configmap-php-ini-worker.yaml,src/Packages/CoreFilter.php
+ phpmd app/Http/Controllers/TrackerController.php,docker/kubernetes/configmap-php-ini-worker.yaml,src/Packages/CoreFilter.php text phpmd.xml

仅循环播放数百次,直到我按下Ctrl + C组合键

bash command-line phpmd
1个回答
0
投票

phpmd函数的声明正在“隐藏”路径中的phpmd程序。您应该将函数重命名为其他名称:

function runphpmd() {

也更新呼叫站点:

phpmd)
   runphpmd
   ;;
© www.soinside.com 2019 - 2024. All rights reserved.