我正在尝试从命令行执行bash脚本。 有时它需要一个包含空格的参数。
bash test.sh -l "path/to/image/may contain spaces.png"
提供此方法的正确方法是什么?我试过逃避\
但无济于事。
我收到以下错误;
bash splash.sh -b \#\000000 -l \"img/Rev Logo.jpg\"
convert: unable to open image ''"img/Rev'': No such file or directory @ error/blob.c/OpenBlob/3093.
这与这段代码有关;
logo="$1"
if checkBackground -eq 1
then
convert -size $size canvas:$back -background $back $tmp01
fi
convert \'$logo\' -background $back $tmp02
composite $tmp02 -gravity center $tmp01 output.jpg
答案 0 :(得分:2)
如果脚本的第一个参数是“foo bar”,那么这一行:
convert \'$logo\' -background $back $tmp02
将第一个参数传递给convert
字符串'foo
并传递第二个参数bar'
。你可能不希望这样。将该行更改为:
convert "$logo" -background "$back" "$tmp02"
通常,双引用任何变量。
当你调用脚本时,只需引用参数。如果您将脚本称为:
bash splash.sh -b \#\000000 -l \"img/Rev Logo.jpg\"
然后你传递了两个不同的参数:"img/Rev
和Logo.jpg"
。有一个双引号的文件名是完全有效的,但非常不寻常。如果要传递单个参数img/Rev Logo.jpg
,则需要将脚本调用为:
bash splash.sh -b "#000000" -l "img/Rev Logo.jpg"
或
bash splash.sh -b \#000000 -l img/Rev\ Logo.jpg