yadを使用してアプリケーションを終了する方法

yadを使用してアプリケーションを終了する方法

yad システム トレイ通知を使用してアプリケーション (vlc など) を終了したいので、次のコードを使用しました。

yad --notification --no-middle --image=emblem-warning --menu='Cancel ! kill $pid' --text="My Tooltip" &

vlc & pid=${!}

コードでは次のエラーが発生します:

kill: failed to parse argument: '$pid'

ご協力いただければ幸いです

答え1

走るvlc 初め次のようにして、PID を変数に正しく取得します$pid

vlc & pid=${!}

次に"パラメータを二重引用符で囲みます(ない一重引用符') を使用すると、次のようにパラメータ展開が可能になります$pid

yad --notification --no-middle --image=emblem-warning --menu="Cancel ! kill $pid" --text="My Tooltip" &

答え2

このコードの目的は、ffmpegを起動してビデオのサイズを変更し、エンコードし、yadを使用して閉じることです。私はプロセスのPIDを一時ファイルに保存することで解決策を見つけました。私は長い間、bash -c 'command'内でシングルクォートを使用しようとしていました。最終的に、シングルクォートを次のように置き換えることで解決しました。 '"'"'

export TMP="$(mktemp)"
yad --notification --no-middle  --command="" --image=emblem-warning --menu='Cancel current job ! bash -c "kill  $(cat $TMP); rm $TMP;"' & pid=$!
export fname="video.mp4"
bash -c 'echo $$>$TMP; exec ffmpeg -n -loglevel warning -i "$fname" -acodec copy -vcodec libx264 -crf 24 -vf "scale='"'"'if(gte(iw,ih),-1,720)'"'"':'"'"'if(gte(iw,ih),720,-1)'"'"'"  "${fname%%.*}_720.${fname##*.}"'
kill $pid

関連情報