gpt4 book ai didi

linux - 无法在 bash 脚本中使用参数 nb10

转载 作者:太空宇宙 更新时间:2023-11-04 09:00:26 25 4
gpt4 key购买 nike

我可以传递到 bash 脚本中的参数数量是否有限制?似乎 nb 9 工作正常,但忽略了 nb10。

我尝试使用 audio = {10}

因为我在某个地方读过它,但这似乎也不起作用......

调用(从本地 php 文件):

exec('nohup sudo -u brftv /home/brftv/sizetest.sh ft7gy8hu9ji0.mp4 800 600 94 64 305 660 1 h23 1> /dev/null 2>&1 &');

bash 脚本

#!/bin/bash
cd /var/sync
#width=`/bin/cat size|/bin/sed 's/\([0-9]*\)\x\([0-9]*\)/\1/'`
#height=`/bin/cat size|/bin/sed 's/\([0-9]*\)\x\([0-9]*\)/\2/'`
width=1920
height=1080
gwidth=$6
gheight=$7
nwidth=$2
nheight=$3
oposx=$4
oposy=$5
nwidth=$gwidth
fsfile="/usr/share/nginx/www/cloudsign_local/video/keepFullscreen"
#echo $*>/home/brftv/testkommando

nheight=`eval expr $nwidth \\\* $height / $width`
if [ $nheight -gt $gheight ]
then
nheight=$gheight
nwidth=`eval expr $nheight \\\* $width / $height`
fi
posy=`eval expr $oposy + $gheight / 2 - $nheight / 2`
posx=`eval expr $oposx + $gwidth / 2 - $nwidth / 2`

fullscreen=$8
vcodec=$9
audio=${10}

echo audio>/home/brftv/tiovar
#prints an empty file!!! a bool is passed, should always be 0 or 1...

case $audio in
1)
defflags="-display :0 -x $nwidth -y $nheight -vo vdpau -ao alsa:device=hw=1.7 -nograbpointer -geometry $posx:$posy -nolirc -nortc -noconsolecontrols -nojoystick -slave -noborder -ontop"
;;
0)
defflags="-display :0 -x $nwidth -y $nheight -vo vdpau -nosound -nograbpointer -geometry $posx:$posy -nolirc -nortc -noconsolecontrols -nojoystick -slave -noborder -ontop"
;;
esac

#ARK active audio -ao alsa:device=hw=1.7
#defflags="-display :0 -x $nwidth -y $nheight -vo vdpau -geometry $posx:$posy -really-quiet -nolirc -nojoystick -slave -noborder -ontop -ss 130"

vcodec=`echo $vcodec | tr '[A-Z]' '[a-z]'`
case $vcodec in
ffh264|ffwmv3|ffmpeg12|ffvc1)
vcodec=${vcodec}vdpau
mplflags="$defflags -vc $vcodec"
;;
h264|H264|vc1|VC1|wmv3|WMV3|mpeg12|MPEG12)
vcodec=ff${vcodec}vdpau
mplflags="$defflags -vc $vcodec"
;;
*)
mplflags="$defflags"
;;
esac

case $fullscreen in
1)
DISPLAY=:0 /usr/bin/xdotool key Ctrl+F2
/usr/bin/mplayer $mplflags -fs $1
echo "/usr/bin/mplayer $mplflags -fs $1">/tmp/mplayer
if [ -f "$fsfile" ]; then
echo "fullscreen file not found"
else
#DEBUG /usr/bin/mplayer $mplflags -fs /home/brftv/videos/cosmopolis_trlr_01_1080p_dl.mov
DISPLAY=:0 /usr/bin/xdotool key Ctrl+F1
fi
;;
0)
/usr/bin/mplayer $mplflags $1
echo "mplayer $mplflags $1"
;;
esac

注意:在我添加第 10 个参数之前工作得很好......

最佳答案

audio=${10} 是正确的。正如 bash 手册所说:

When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces (see EXPANSION below).

错误是在那之后的行:

echo audio>/home/brftv/tiovar

应该是:

echo "$audio" > /home/brftv/tiovar

您忘记了 $

我不确定你为什么得到一个空文件,你应该得到一个包含“音频”一词的文件。

顺便说一句,将 URL 参数放入命令行时,您应该使用 escapeshellarg,否则您将面临一些严重的注入(inject)问题。

关于linux - 无法在 bash 脚本中使用参数 nb10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com