簡體   English   中英

Bash-文件n為$ 1?

[英]Bash - file n of $1?

最近,我用bash做過一些事情,主要是關於音頻文件(sox批處理腳本)的。 我嘗試學習,正在閱讀,閱讀和搜索,但有時我不得不解決的“簡單”問題只會導致我遇到大量的台詞,網頁,最終沒有答案。 這是其中之一:

我需要處理給定輸入文件夾( $1 )的文件$1 ,並將其參數之一與另一個給定輸入文件夾( $2 )的文件1進行比較。 “文件1”,是指:如果您調用目錄內容,將列出的第一個文件; 喜歡 :

for f in "$1"/*
do
  echo $f
done

我的目標是按對將文件夾$1的文件n與文件夾$2文件n進行比較,其中“ n”是文件在文件夾中的“位置”,無論它們是按名稱列出還是其他形式都無關緊要,因為在運行腳本時,它們將以相同的方式在文件夾$1和文件夾$2列出。

Applescript讓我以一種簡單的方式尋址文件夾1的文件4; 在bash腳本中會復雜得多,還是我完全缺少基本的東西?

首先十分感謝

令人驚訝的是,這實際上有機會正常工作,因為POSIX保證文件名擴展的結果將根據當前語言環境(鏈接后面的2.13.3)進行排序,並且bash必須遵循它。 請注意,盡管不同的語言環境可能會產生不同的排序順序。

由於該問題被標記為“ bash”,因此我將不關心POSIX一致性,並建議使用bash數組:

files=("$1"/*)
echo "${files[4]}"

這也可以與變量一起用作索引:

files=("$1"/*)
i=4
echo "${files[i]}"

但是,我看不到如何合理使用此構造,聽起來好像您實際上是在尋找diff -r "$1" "$2"左右。

當文件名相等時(響應者對@Wintermute的回答提出了什么建議),您可以不使用數組來處理它:

ls $1 | while read fileWithPath; do
   file=${fileWithPath##*/}
   echo "My own soxdiff between $1/$file and $2/$file"
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM