How To Append Lines To File If They Do Not Exist

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
FILE=/etc/samba/smb.conf

LINES=$(cat <<EOF
[scan]
Comment = Scans
Path = /var/scan
Browseable = yes
Writeable = Yes
only guest = no
guest ok = no
create mask = 0777
directory mask = 0777
Public = no
EOF
)

grep -q "${LINES}" ${FILE} && echo "Nothing to do" || \
    echo "${LINES}" | tee -a ${FILE}