【发布时间】:2012-03-23 20:24:07
【问题描述】:
抱歉,主题名称有问题(如果您在查看问题后发现更合适的标题,请随时编辑)。 代码示例等于 1000 个单词,所以我们开始:
if [ "$REGEX" != "" ]; then
find $TEST_DIR -type f -regextype posix-extended -regex '^.*(status|stderr|stdout)-captured$' |
grep -E $REGEX |
awk '{print(""$1" "$1)}' | sed 's/-captured$/-expected/' |
while read -r line; do mv -f $line; done
else
find $TEST_DIR -type f -regextype posix-extended -regex '^.*(status|stderr|stdout)-captured$' |
awk '{print(""$1" "$1)}' | sed 's/-captured$/-expected/' |
while read -r line; do mv -f $line; done
fi
代码的作用并不那么重要,我只是想找到更优雅的方式来使用“grep -E $REGEX”或不使用。我认为条件别名可以像我习惯使用 shell 一样完成这项工作,但它们在脚本中不起作用。
我可以设置一个条件,但我担心多次评估会影响性能。
有什么方法可以让代码“更优雅”?
【问题讨论】:
-
您能更好地描述您正在寻找的输入/输出吗?
-
@CarlNorum 认为没有必要,但我会:首先找到匹配名称
{status,stderr,stdout)-captured的文件的打印路径,然后通过grep -E $REGEX进一步过滤这些文件。 awk、sed 和读取,将这个例子:./dir/status-captured组装成mv ./dir/status-captured ./dir/status-expected,然后执行。
标签: linux bash shell pipe conditional-execution