Quoting

包含呼叫 mediainfo 的空格的腳本參數

  • February 24, 2021

我想創建一個小的 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

引用自:https://unix.stackexchange.com/questions/420457