我想使用yad系统托盘通知来终止应用程序(例如vlc),我使用了以下代码:
yad --notification --no-middle --image=emblem-warning --menu='Cancel ! kill $pid' --text="My Tooltip" &
vlc & pid=${!}代码给出了以下错误:
kill: failed to parse argument: '$pid'任何帮助都是非常感谢的。
发布于 2023-01-08 10:47:11
首先运行vlc 以使其PID正确进入变量$pid,如下所示:
vlc & pid=${!}然后,在参数(<#>not单引号')周围使用双引号",以允许$pid的参数展开,如下所示:
yad --notification --no-middle --image=emblem-warning --menu="Cancel ! kill $pid" --text="My Tooltip" &发布于 2023-01-08 21:22:12
代码的目标是启动ffmpeg来调整视频的大小和编码,并能够使用yad关闭视频。我通过将进程的PID存储在一个临时文件中找到了解决方案。我花了很长时间试图在bash -c‘命令’中使用单引号。最后,我用'"'"'替换单引号来解决这个问题。
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 $pidhttps://askubuntu.com/questions/1449280
复制相似问题