制作 Bash 脚本将桌面壁纸设置为动画 gif——这些错误是什么意思?

制作 Bash 脚本将桌面壁纸设置为动画 gif——这些错误是什么意思?

我关注本教程看看我是否可以将 Ubuntu 中的桌面壁纸制作成动画 gif。在本教程中,我复制并粘贴了一个据说可以让我做到这一点的脚本。在我尝试运行该脚本之前,一切都正常。

这是脚本:

    #!/bin/sh
    # Uses xwinwrap to display given animated .gif in the center of the screen

    chmod +x gifbg.sh

    if [ $# -ne 1 ]; then
    echo 1>&2 Usage: $0 image.gif
    exit 1
    fi

   #get screen resolution
   SCRH=`xrandr | awk '/current/ { print $8 }'`
   SCRW=`xrandr | awk '/current/ { print $10 }'`
   SCRW=${SCRW%\,}

   #get gif resolution
   IMGHW=`gifsicle --info $1 | awk '/logical/ { print $3 }'`
   IMGH=${IMGHW%x*}
   IMGW=${IMGHW#*x}

   #calculate position
   POSH=$((($SCRH/2)-($IMGH/2)))
   POSW=$((($SCRW/2)-($IMGW/2)))

   xwinwrap -g ${IMGHW}+${POSH}+${POSW} -ov -ni -s -nf — gifview -w WID $1 -a

   exit 0

   :wq

当我尝试在终端中运行脚本时,它返回以下内容:

    gifbg.sh: 23: gifbg.sh: arithmetic expression: expecting primary: "(1366/2)-(/2)"

当我在终端中使用指定的图像运行 gifsicle 时,它​​返回以下内容:

    * /home/bc/Pictures/tvStatic.gif 4 images
    logical screen 500x375
    global color table [256]
    background 0
    loop forever
    + image #0 500x375
    disposal previous delay 0.08s
    + image #1 500x375
    local color table [256]
    disposal previous delay 0.08s
    + image #2 500x375
    local color table [256]
    disposal previous delay 0.08s
    + image #3 500x375
    local color table [256]
    disposal previous delay 0.08s

答案1

前三个错误是因为您的脚本中有非 ASCII (和)字符 - 您需要用常规单引号替换它们'

第四个可能是因为你的shebang#!/bin/sh正在调用dash解释器,而不是bash:参见破折号

相关内容