簡體   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