[英]Bash: can't expand wildcard in filename from "read" command variable
我已經用盡了所有可能的搜索。
我正在嘗試使用read
從 CLI 讀取文件名/路徑,以便我可以鏈接文件以進行批量排序。 我已經嘗試了從引號到無的各種方法,嘗試使用 eval 進行擴展等等。 他們都沒有工作。
這是我當前狀態的腳本:
#!/bin/bash
read -p "from? (explicit, folder/) " -e from
read -p "to? (explicit, folder/) " -e to
read -p "base filename before ep name? " -e formatOldStart
read -p "base filename after ep name? " -e formatOldEnd
...
lnFrom=$from$formatOldStart$currentEpisodeNumber$formatOldEnd
echo $lnFrom
#ln "$lnFrom" "$lnTo"
這是一個示例用法:
$ from? (explicit, folder/) $HOME/archive/_DATA_ARCHIVE/.data/Example\ Complete\ Series\ +\ Movies\ \[Dual\ Audio\]/Example\ \[Dual\ Audio\ DVD\ 480p\]/
$ to? (explicit, folder/) $HOME/archive/_DATA_ARCHIVE/_video_storage/Anime/Shows/Example/Season\ 1/
$ base filename before ep name? \(Hi10\)_Example_-_
$ base filename after ep name? _(DVD_480p)_(a-S)_(*).mkv
然后是輸出:
$HOME/archive/_DATA_ARCHIVE/.data/Example Complete Series + Movies [Dual Audio]/Example [Dual Audio DVD 480p]/(Hi10)_Example_-_015_(DVD_480p)_(a-S)_(*).mkv
這是預期的輸出:
/home/user/archive/_DATA_ARCHIVE/.data/Example Complete Series + Movies [Dual Audio]/Example [Dual Audio DVD 480p]/(Hi10)_Example_-_015_(DVD_480p)_(a-S)_(6852D8ED).mkv
在手動插入通配符(不是正則表達式)和本文建議的文件名后,我只能獲得預期的輸出,但這顯然意味着每次我想將它用於沒有自動的新文件夾時,我都必須手動編輯此腳本-完全的。 我有很多東西要分類,所以這是不可能的。
編輯:采用不同的方法后,我想出了一個更簡單的單行代碼,主要用於選項卡完成(當然直到變量):
for index in {28..54}; do ln "/home/user/archive/_DATA_ARCHIVE/.data/Example Complete Series + Movies [Dual Audio]/Example [Dual Audio DVD 480p]/(Hi10)_Example_-_0${index}_(DVD_480p)_(a-S)_("*").mkv" "/home/user/archive/_DATA_ARCHIVE/_video_storage/Anime/Shows/Example/Season 2/Example S2E0${index}.mkv"; done
所以我有人幫忙,謝天謝地我能夠解決它。
首先,我們在read
命令中使用-r
來不解析轉義字符。
然后我們分配lnFrom
和lnTo
不帶引號:
lnFrom=$from$formatOldStart$currentEpisodeNumber$formatOldEnd
lnTo=$to$formatNewStart$currentEpisodeNumber$formatNewEnd
然后我們在ln
命令上使用eval
來解析變量:
eval ln "$lnFrom" "$lnTo"
現在是的,我理解eval的問題,因為它是一個安全問題,但是這個腳本在我家的封閉網絡上運行,所以我不在乎。
如果有人可以提供無需 eval 即可工作的解決方案,我將非常樂意接受該答案。
對不起,如果這對你們中的很多人來說很明顯。 我在工作中熟悉 JavaScript,但除了繞過操作系統的基本命令之外,我對 bash/unix 並不十分熟悉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.