繁体   English   中英

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

[英]Using a Wildcard Match as a Command Line Argument in Bash

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

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

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

$ ./myscript.sh /path/to/my\ files/*.txt

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

dest='/desktop/'
for ARG in $@; do
  /some/other/script $ARG $dest$ARG.new
done

它不必完全像这样工作,任何最简单的都会产生类似的结果

这是否满足您的需求:

dest='/desktop/'
for ARG in "$@"; do
  /some/other/script "$ARG" "$dest$ARG.new"
done

编辑:删除 ARG 上的路径

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

Bash 在执行命令之前会进行通配符扩展,也就是说,它将将该表达式替换为匹配文件的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM