Quoting
包含呼叫 mediainfo 的空格的腳本參數
我想創建一個小的 shell 腳本,它會告訴我文件名作為參數傳遞給它的影片的持續時間。它會是這樣的:
$ script_name "file name with spaces.webm" # or any other media file extension
腳本文件將類似於
#/bin/bash SECRET_SAUCE_USING_$1 | mediainfo | grep Duration | sort -u # maybe SECRET_SAUCE_USING_$1 | xargs -0 mediainfo . . .
在命令行上,這是可行的,也是我希望腳本執行的操作:
$ mediainfo file\ name\ with\ spaces.webm | grep Duration | sort -u
我試過使用類似的東西
echo "$1" | sed 's/ /\\ /g' # piped to mediainfo . . .
將文件名中的空格更改為 ‘' 字元對(不帶引號)。迴聲… | sed … 部分有效,但 mediainfo barfs
和
echo "$1" | tr ' ' '\000' | xargs -0 mediainfo . . .
將空格更改為空值並獲取 xargs 以呼叫文件名中的空值而不是空格的 mediainfo。
到目前為止我還沒有找到解決方案。(我實際上使用 zsh,而不是 bash。)非常感謝所有幫助。腫瘤壞死因子。
如果您希望腳本的參數 (
$1
) 最終成為 mediainfo 的參數,那麼只需將其放在那裡:# ... mediainfo "$1" | grep Duration | sort -u # ...
這適用於腳本的單個參數。更靈活的是,您可以循環遍歷腳本的所有參數,並一次將它們提供給 mediainfo:
for file in "$@" do mediainfo "$file" # ... done