在Bash中使用通配符匹配作为命令行参数

Dex*_*Dex 3 bash command-line loops wildcard

我正在尝试编写一个Bash脚本来转换一堆文件.

假设我有一个目录/path/to/my files/有三个文本文件:a b.txt,c d.txte.txt(注意空格)

我需要能够像这样调用脚本:

$ ./myscript.sh /path/to/my\ files/*.txt
Run Code Online (Sandbox Code Playgroud)

然后在bash中循环遍历它们,像这样处理它们:

dest='/desktop/'
for ARG in $@; do
  /some/other/script $ARG $dest$ARG.new
done
Run Code Online (Sandbox Code Playgroud)

它不必像这样工作,无论什么最容易产生类似的结果

lin*_*uts 5

这样做你需要的:

dest='/desktop/'
for ARG in "$@"; do
  /some/other/script "$ARG" "$dest$ARG.new"
done
Run Code Online (Sandbox Code Playgroud)

编辑:删除ARG上的路径

dest='/desktop/'
for ARG in "$@"; do
  /some/other/script "$ARG" "$dest$(basename "$ARG").new"
done
Run Code Online (Sandbox Code Playgroud)