BASH 动态命令生成

BASH Dynamic Command Generation

我被这个问题困住了:我需要一个必须传递给 ls 命令的动态表达式生成。

这是我试过的代码:

op="ext"
fileName="MDL_test_"
fileExt=".csv"

if [[ $op == "noext" ]] ; then
    searchExp="*$fileName*"
else
    searchExp="*$fileName*$fileExt"
fi

ls "$("./files/"$searchExp)"

但是当我执行脚本时,我得到的是:

./ext_test.sh: line 15: ./files/MDL_test_30160410.csv.gz: Permission denied
ls: cannot access : No such file or directory

我想我做错了什么,但我想不通...

你只需要将字符串分段构建;大多数语法在将扩展结果传递给 ls.

之前由 shell 评估
if [[ $op == noext ]]; then
  fileExt=
else
  fileExt=.csv
fi

ls ./files/*"$fileName"*"$fileExt"