取一个逗号分隔的字符串并将其添加到命令中
Take a comma separated string and add it into a command
有人知道我做错了什么吗? DIFFS
在第 1 行 (foo/bar,baz/bat.php
) 之后包含一个以逗号分隔的文件路径列表。如果我只是将其复制粘贴到实际终端中第 2 行的其余部分,我就会得到我所期望的。通过我正在使用的脚本执行此操作,它会永远运行,然后 returns 一个新提示,没有错误。我已经尝试了一些东西,但我的 bash fu 非常弱...:S
#!/bin/bash
...
function phpmd() {
DIFFS=`git diff development --name-only | xargs | sed 's/ /,/g'`
phpmd ${DIFFS} text phpmd.xml
}
...
case "" 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
,如下所示。编辑上面的代码块以反映。我在一个独立的函数中使用了这两行,它们工作得很好,所以我对更广泛的脚本 obvs 不了解...
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
函数 phpmd
的声明是 "hiding" 您路径上的 phpmd
程序。您应该将函数重命名为其他名称:
function runphpmd() {
并更新调用站点:
phpmd)
runphpmd
;;
或者,您可以使用 the command
builtin 来避免递归调用名为 phpmd
:
的函数
function phpmd() {
DIFFS=`git diff development --name-only | xargs | sed 's/ /,/g'`
command phpmd ${DIFFS} text phpmd.xml
}
来自 command
的文档:
Runs command with arguments ignoring any shell function named command.
有人知道我做错了什么吗? DIFFS
在第 1 行 (foo/bar,baz/bat.php
) 之后包含一个以逗号分隔的文件路径列表。如果我只是将其复制粘贴到实际终端中第 2 行的其余部分,我就会得到我所期望的。通过我正在使用的脚本执行此操作,它会永远运行,然后 returns 一个新提示,没有错误。我已经尝试了一些东西,但我的 bash fu 非常弱...:S
#!/bin/bash
...
function phpmd() {
DIFFS=`git diff development --name-only | xargs | sed 's/ /,/g'`
phpmd ${DIFFS} text phpmd.xml
}
...
case "" 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
,如下所示。编辑上面的代码块以反映。我在一个独立的函数中使用了这两行,它们工作得很好,所以我对更广泛的脚本 obvs 不了解...
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
函数 phpmd
的声明是 "hiding" 您路径上的 phpmd
程序。您应该将函数重命名为其他名称:
function runphpmd() {
并更新调用站点:
phpmd)
runphpmd
;;
或者,您可以使用 the command
builtin 来避免递归调用名为 phpmd
:
function phpmd() {
DIFFS=`git diff development --name-only | xargs | sed 's/ /,/g'`
command phpmd ${DIFFS} text phpmd.xml
}
来自 command
的文档:
Runs command with arguments ignoring any shell function named command.