为什么 Bash 不能将我的变量识别为字符串?

Why is Bash not recognising my variable as a string?

我制作了一个 bash 脚本。我们称它为 "runner.sh"。在里面我是 运行 带有一些标志的 omxplayer。

omxplayer $TARGETFOLDER/*.mp4

这很好用。现在让我们调整视频的大小和位置。

omxplayer —win "0 0 640 480" $TARGETFOLDER/*.mp4

这也很好用。现在让我们尝试将 "win flag" 放入变量中。我正在转义报价。

SizeAndPosition="—win \"0 0 640 480\""

好的,我现在试试

omxplayer $SizeAndPosition $TARGETFOLDER/*.mp4

不,行不通。我收到错误 未找到文件“0”。 为了确定,我将整个命令打印到屏幕上。

echo "omxplayer $SizeAndPosition $TARGETFOLDER/*.mp4"

…我得到输出…

omxplayer —win "0 0 640 480" /homefolder/*.mp4

为什么它不能将我的变量识别为命令中的任何其他字符串?我可以做些什么吗?

编辑:对于造成的混乱,我们深表歉意。问题是关于SizeAndPosition,为什么不把它当作一个参数?

而不是 storing the command arguments in a variable,使用数组:

SizeAndPosition=(-win '0 0 640 480')
omxplayer "${SizeAndPosition[@]}" "$TARGETFOLDER"/*.mp4