如何在终端提示符(bash)中使用变量来修改文件'名字呢?

时间:2015-04-28 16:20:55

标签: bash terminal command-prompt

我想要运行这样的命令:

$ valgrind --leak-check=full  ./program < speed-01.in

我有一些像这样的测试,以-02-03等不同的后缀结束。

我没有写一个bash脚本,而是想逐个运行这些测试,而只修这样的最后一个数字:

$ valgrind --leak-check=full  ./program < speed-0${A}.in ${A}=1

但是,在这种情况下,似乎不是引入变量的正确方法。

我的问题是:在这种情况下如何使用变量?是否有可能以这样的方式写作,整个想法确实有意义?

2 个答案:

答案 0 :(得分:3)

for f in speed-*.in; do
  valgrind --leak-check=full  ./program <"$f"
done

...或者,如果你真的想要出于某种原因计算数字......

for ((a=0; a<9; a++)); do
  printf -v num '%02d' "$a" # add a leading 0 only if number is less than 10
  valgrind --leak-check=full ./program <"speed-${num}.in"
done

现在,如果您想使用不同的值手动运行它,只需定义一个函数:

leakcheck() {
  local num
  printf -v num '%02d' "$1"
  valgrind --leak-check=full ./program <"speed-${num}.in"
}

...然后你可以跑...

leakcheck 1
leakcheck 2
...

答案 1 :(得分:0)

另一种方式,使用您的示例是

A=1
valgrind --leak-check=full  ./program < speed-0$((A++))

然后,再重复最后一行九次。

如果您想要01..12,这会变得更加复杂。