Comments and Escape
Comments are the useful information that the developers provide to make the reader understand the source code.
There are two types of comments:
- Single-line comment
- Multi-line comment
Single-line comments:
A single-line comment starts with a hashtag symbol with no white spaces (#) and lasts till the end of the line. If the comment exceeds one line then put a hashtag on the next line and continue the comment.
syntax:
#!/bin/bash
# this is a comment.
Multi-line comments
there are some tricky ways to do multi-line comments in shell script let me show you some tricks for the same
- Use : ' to open and ' to close (make sure you have space between : and ')
#!/bin/bash
: '
This is
multiline comment
in shellscript
'
- another method
#!/bin/bash
: <<'END_COMMENT'
This is
multiline comment
in shellscript
END_COMMENT
Escape
The escape (\) preceding a character tells the shell to interpret that character literally.
A non-quoted backslash (\) is the escape character. It preserves the literal value of the next character that follows, with the exception of <newline>.
If a \<newline> pair appears, and the backslash is not itself quoted, the \<newline> is treated as a line continuation (that is, it is removed from the input stream and effectively ignored).
This allows you to break very long commands / command sequences (piping and transforming output etc.) in scripts into multiple lines for readability.
#!/bin/bash
# owner: Gaurav
# purpose: print some echo commands
echo this is gaurav sharma # in line comment
echo 'this is our first shellscript' # one more comment
# this is an another comment in shell script.
# echo -e "\033[0;31m fail message # here" # this is one more comment
# echo -e "\033[0;32m success message # here"
# echo -e "\033[0;33m warning message here"
echo "my
name
is
gaurav"
echo "
########### Script Starting ########
purpose: going to install nginx
####################################
"
# strong quotes.
echo 'my \
name \
is \
gaurav' # Escape character \ taken literally because of strong quoting.
echo " my \
name \
is \
gaurav \
" # Newline escaped.
echo -e "this is gaurav \t saurav \t test name"
echo -e "this is gaurav \v saurav \v test name"
echo -e "this is gaurav \n saurav \n test name"
let's run the above script and see the output
┌──(gaurav㉿learning-ocean)-[~/shellscript-youtube] └─$ ./echo.sh this is gaurav sharma this is our first shellscript fail message # here success message # here warning message here my name is gaurav ########### Script Starting ######## purpose: going to install nginx #################################### my name is gaurav this is gaurav saurav test name this is gaurav saurav test name this is gaurav saurav test name