Bash 脚本到 运行 测试
Bash script to run tests
我有一个 java 项目,其中包含我正在 Linux 系统上开发的单元测试,因此我为 运行 我的所有测试制作了一个 bash 脚本。虽然我真的不能让它工作
#!/bin/bash
JUNITPATH="/usr/share/java/junit4-4.11.jar"
TESTCLASSES=$(find kai/modsogner_och_durin/testing/* | grep .class$)
EXT="class"
CLASSNAMES=${TESTCLASSES%.$EXT}
echo "BEFORE: $CLASSNAMES"
DOTS=$CLASSNAMES | tr '/' '.'
echo AFTER: $DOTS
java -cp .:$JUNITPATH org.junit.runner.JUnitCore $DOTS
echo 语句和 DOTS 变量显然仅用于调试目的。我的问题是,当我尝试分配给 DOTS 时,当我检查 DOTS 时它是空的。
echo AFTER: $DOTS
这打印了一个空行,但是 BEFORE: 打印完美地打印了路径。似乎我对 bash 的处理不是很好并且遗漏了一些非常明显的东西,但我真的无法让它工作。我至少确保如果我替换
DOTS=$CLASSNAMES | tr '/' '.'
和
echo $CLASSNAMES | tr '/' '.'
它按预期使用点分隔的包打印 class 名称。所以这似乎是一个语法错误。
像FOO=bar baz
这样的常规赋值需要一个字符串并将其赋值给变量;它不会 运行 任何命令。
你想要的是命令替换,通过 $(...)
(或老式的 `...`
):
DOTS=$(echo $CLASSNAMES | tr '/' '.')
但在这种简单的情况下,您还可以使用 bash 的参数替换为 ${varname//pattern/replacement}
:
DOTS=${CLASSNAMES//\//.}
我有一个 java 项目,其中包含我正在 Linux 系统上开发的单元测试,因此我为 运行 我的所有测试制作了一个 bash 脚本。虽然我真的不能让它工作
#!/bin/bash
JUNITPATH="/usr/share/java/junit4-4.11.jar"
TESTCLASSES=$(find kai/modsogner_och_durin/testing/* | grep .class$)
EXT="class"
CLASSNAMES=${TESTCLASSES%.$EXT}
echo "BEFORE: $CLASSNAMES"
DOTS=$CLASSNAMES | tr '/' '.'
echo AFTER: $DOTS
java -cp .:$JUNITPATH org.junit.runner.JUnitCore $DOTS
echo 语句和 DOTS 变量显然仅用于调试目的。我的问题是,当我尝试分配给 DOTS 时,当我检查 DOTS 时它是空的。
echo AFTER: $DOTS
这打印了一个空行,但是 BEFORE: 打印完美地打印了路径。似乎我对 bash 的处理不是很好并且遗漏了一些非常明显的东西,但我真的无法让它工作。我至少确保如果我替换
DOTS=$CLASSNAMES | tr '/' '.'
和
echo $CLASSNAMES | tr '/' '.'
它按预期使用点分隔的包打印 class 名称。所以这似乎是一个语法错误。
像FOO=bar baz
这样的常规赋值需要一个字符串并将其赋值给变量;它不会 运行 任何命令。
你想要的是命令替换,通过 $(...)
(或老式的 `...`
):
DOTS=$(echo $CLASSNAMES | tr '/' '.')
但在这种简单的情况下,您还可以使用 bash 的参数替换为 ${varname//pattern/replacement}
:
DOTS=${CLASSNAMES//\//.}