1

I am new to linux. I want to make a automated script for compilation of cm11 form my device and this is my script

#/bin/bash
cd cm11/.repo/
rm -rf local_manifests
mkdir local_manifests
cd local_manifests
touch kyleve.xml
echo "<?xml version="1.0" encoding="UTF-8"?>" >> kyleve.xml
echo "<manifest>" >> kyleve.xml
echo "<project name="Grace5921/device_samsung_kyleve" path="device/samsung/kyleve" revision="cm11" remote="github"/>" >> kyleve.xml
echo "<project name="Grace5921/vendor_samsung_kyleve" path="vendor/samsung/kyleve" revision="cm11" remote="github"/>" >> kyleve.xml
echo "<project name="Grace5921/kernel_samsung_kyleve" path="kernel/samsung/kyleve" revision="cm11" remote="github"/>" >> kyleve.xml
echo "</manifest>" >> kyleve.xml
cd
cd cm11
repo sync -j4
. build/envsetup.sh
lunch
brunch kyleve
echo "Done!"

But echo command adds this line to kyleve.xml

<project name=Grace5921/device_samsung_kyleve path=device/samsung/kyleve revision=cm11 remote=github/>

but i need this line in my output file

<project name="Grace5921/device_samsung_kyleve" path="device/samsung/kyleve" revision="cm11" remote="github"/>

those double inverted commas are messing which command can work in this case

2 Answers 2

3

Use single quotes to make the string literal:

echo '<project name="Grace5921/device_samsung_kyleve" path=\
  "device/samsung/kyleve" revision="cm11" remote="github"/>' >>kyleve.xml

Or escape the relevant double quotes with \:

echo "<project name=\"Grace5921/device_samsung_kyleve\" \
  path=\"device/samsung/kyleve\" revision=\"cm11\" remote=\"github\"/>" >>kyleve.xml
1

You should use single quotes (') instead of double quotes (") to surround your line. Example:

echo "myQuoted line "foobar" " >> test.txt
echo 'myQuoted line "foobar" ' >> test.txt

cat test.txt
myQuoted line foobar
myQuoted line "foobar"

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .