やや複雑なコマンドを書いた。なぜなら、複数の引用符' '
と" "
引用符があるからです。そして脱出条件'\''
(何らかの理由でその使い方は必須です。たくさん調べました)。\
引用符で行を破ろうとしましたが、残りの部分がコマンドとしてfind
認識されない問題が発生しました。ffmpeg
また、shellcheck.net
「引用符の中に行を囲まないでください」と述べています。どうすれば安全にできますか?コードは次のとおりです。
#!/usr/bin/env sh
a="copy"
v="h264"
exts="srt"
f="50"
n="Arial"
sudo find . -iname "*.mp4" -exec sh -c 'ffmpeg -i "$1" -c:a "$2" -c:v "$3" -vf \
"subtitles="${1%.*}.$4":'\''force_style=fontsize="$5",fontname="$6"'\''" \
-map_metadata -1 "$1.${1##*.}" -hide_banner' -- "{}" "$a" "$v" "$exts" "$f" "$n" \;
ベストアンサー1
一重引用符とバックスラッシュで行を終了し、一重引用符(空白なし!)で次の行を始めることを検討しましたか?
...'\
'...