Reputation: 20076
I have a small bash script bdocs.sh
:
#!/bin/bash
REPO=$1
QUICKBOOK=/usr/bin
AUTOINDEX=/usr/bin
XSLTPROC=/usr/bin
DOCBOOK_DTD=/usr/share/xml/docbook/schema/dtd/4.2
DOCBOOK_XSL=/usr/share/xml/docbook/stylesheet/docbook-xsl
if [[ -n "$REPO" ]]; then
echo cmake -DBOOSTQUICKBOOK_ROOT=$QUICKBOOK \
-DBOOSTAUTOINDEX_ROOT=$AUTOINDEX \
-DXSLTPROC_ROOT=$XSLTPROC \
-DDOCBOOK_DTD_ROOT=$DOCBOOK_DTD \
-DDOCBOOK_XSL_ROOT=$DOCBOOK_XSL \
-DHPX_WITH_DOCUMENTATION=On \
$REPO
fi
however If I call it > ./bdocs.sh ../repo
it only echos:
cmake -DBOOSTQUICKBOOK_ROOT=/usr/bin -DBOOSTAUTOINDEX_ROOT=/usr/bin
./build_docs.sh: line 14: -DXSLTPROC_ROOT=/usr/bin: No such file or directory
./build_docs.sh: line 16: -DDOCBOOK_DTD_ROOT=/usr/share/xml/docbook/schema/dtd/4.2: No such file or directory
./build_docs.sh: line 17: -DHPX_WITH_DOCUMENTATION=On: command not found
./build_docs.sh: line 18: h: command not found
how come my line continuations aren't working after the second command line argument is passed into cmake?
Upvotes: 0
Views: 97
Reputation: 531125
Slightly less efficient, but more readable, is to use cat
and a here document:
#!/bin/bash
REPO=$1
QUICKBOOK=/usr/bin
AUTOINDEX=/usr/bin
XSLTPROC=/usr/bin
DOCBOOK_DTD=/usr/share/xml/docbook/schema/dtd/4.2
DOCBOOK_XSL=/usr/share/xml/docbook/stylesheet/docbook-xsl
if [[ -n "$REPO" ]]; then
cat <<EOF
cmake -DBOOSTQUICKBOOK_ROOT=$QUICKBOOK
-DBOOSTAUTOINDEX_ROOT=$AUTOINDEX
-DXSLTPROC_ROOT=$XSLTPROC
-DDOCBOOK_DTD_ROOT=$DOCBOOK_DTD
-DDOCBOOK_XSL_ROOT=$DOCBOOK_XSL
-DHPX_WITH_DOCUMENTATION=On
$REPO
EOF
fi
If the formatting of the generated file isn't important (just the format of the generator), use an array to hold the cmake
arguments; line breaks are implicit.
#!/bin/bash
REPO=$1
QUICKBOOK=/usr/bin
AUTOINDEX=/usr/bin
XSLTPROC=/usr/bin
DOCBOOK_DTD=/usr/share/xml/docbook/schema/dtd/4.2
DOCBOOK_XSL=/usr/share/xml/docbook/stylesheet/docbook-xsl
arguments=(-DBOOSTQUICKBOOK_ROOT=$QUICKBOOK
-DBOOSTAUTOINDEX_ROOT=$AUTOINDEX
-DXSLTPROC_ROOT=$XSLTPROC
-DDOCBOOK_DTD_ROOT=$DOCBOOK_DTD
-DDOCBOOK_XSL_ROOT=$DOCBOOK_XSL
-DHPX_WITH_DOCUMENTATION=On
)
if [[ -n "$REPO" ]]; then
echo cmake "${arguments[@]}" "$REPO"
fi
Upvotes: 1