├── 01-variables.sh ├── 02-variables.sh ├── 03-variables.sh ├── 04-variables.sh ├── 05-exit-status.sh ├── 06-condition.sh ├── 07-git-install.sh ├── 08-funtions.sh ├── 09-jenkins-install.sh ├── 10-jenkins-install-modify.sh ├── README.MD ├── hello-world.sh └── shell.jpg /01-variables.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PERSON1=Ramesh 4 | PERSON2=Suresh 5 | 6 | echo "${PERSON1}: Hi, ${PERSON2}" 7 | echo "${PERSON2}: Hello, ${PERSON1}" 8 | echo "${PERSON1}: Good Morning ${PERSON2}!!!" 9 | echo "${PERSON2}: Very Good Morning ${PERSON1}!!!" -------------------------------------------------------------------------------- /02-variables.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PERSON1=$1 4 | PERSON2=$2 5 | 6 | echo "${PERSON1}: Hi, ${PERSON2}" 7 | echo "${PERSON2}: Hello, ${PERSON1}" 8 | echo "${PERSON1}: Good Morning ${PERSON2}!!!" 9 | echo "${PERSON2}: Very Good Morning ${PERSON1}!!!" -------------------------------------------------------------------------------- /03-variables.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DATE=$(date) 4 | 5 | echo "Script started executing at: ${DATE}" -------------------------------------------------------------------------------- /04-variables.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo -n "Enter Username: " 4 | read -s USERNAME 5 | 6 | echo 7 | 8 | echo -n "Enter Password: " 9 | read -s PASSWORD 10 | 11 | echo 12 | 13 | echo "Username: ${USERNAME}" 14 | echo "Password: ${PASSWORD}" -------------------------------------------------------------------------------- /05-exit-status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | lss -ltr 4 | 5 | echo "exit status: $?" #program should not proceed from here 6 | 7 | ls -ltr 8 | 9 | echo "exit status: $?" -------------------------------------------------------------------------------- /06-condition.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ls -ltr # it is failure so it will not excute further 4 | 5 | if [ $? -ne 0 ]; then 6 | echo "previous command is failure" 7 | exit 1 8 | fi 9 | 10 | ls -ltr 11 | 12 | if [ $? -ne 0 ]; then 13 | echo "previous command is failure" 14 | exit 1 15 | fi 16 | 17 | echo "program is success" -------------------------------------------------------------------------------- /07-git-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | USERID=$(id -u) 4 | 5 | #check user is root or not 6 | 7 | if [ $USERID -ne 0 ]; then 8 | echo "You need to be root user to execute this script" 9 | exit 1 10 | fi 11 | 12 | yum install git -y 13 | 14 | if [ $? -ne 0 ]; then 15 | echo "Installing Git is failure" 16 | exit 1 17 | else 18 | echo "Installing Git is success" 19 | fi 20 | -------------------------------------------------------------------------------- /08-funtions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | Hello(){ 4 | echo "Hello!!! $1" 5 | echo "Script Name: $0" 6 | echo "Number of args: $#" 7 | echo "All args are: $@" 8 | } 9 | 10 | echo "Before calling function, checking name: $1" 11 | echo "Number of args: $#" 12 | echo "All args are: $@" 13 | Hello $1 14 | 15 | #parameters passed to the script are by default not accessible inside function -------------------------------------------------------------------------------- /09-jenkins-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | USERID=$(id -u) 4 | 5 | VALIDATE(){ 6 | if [ $1 -ne 0 ]; then 7 | echo "$2 ... FAILURE" 8 | exit 1 9 | else 10 | echo "$2 ... SUCCESS" 11 | fi 12 | } 13 | 14 | if [ $USERID -ne 0 ]; then 15 | echo "You need to be root user to execute this script" 16 | exit 1 17 | fi 18 | 19 | yum update –y 20 | 21 | VALIDATE $? "Updating YUM" 22 | 23 | wget -O /etc/yum.repos.d/jenkins.repo \ 24 | https://pkg.jenkins.io/redhat-stable/jenkins.repo 25 | 26 | VALIDATE $? "Adding Jenkins Repo" 27 | 28 | rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key 29 | 30 | VALIDATE $? "Import Jenkin key" 31 | 32 | yum upgrade -y 33 | 34 | VALIDATE $? "Upgrade YUM" 35 | 36 | amazon-linux-extras install java-openjdk11 -y 37 | 38 | VALIDATE $? "Installing OpenJDK 11" 39 | 40 | yum install jenkins -y 41 | 42 | VALIDATE $? "Installing Jenkins" 43 | 44 | systemctl enable jenkins 45 | 46 | VALIDATE $? "Enable Jenkins" 47 | 48 | systemctl start jenkins 49 | 50 | VALIDATE $? "Starting Jenkins" 51 | -------------------------------------------------------------------------------- /10-jenkins-install-modify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | USERID=$(id -u) 4 | DATE=$(date +%F) 5 | LOG="jenkins-install-${DATE}.log" 6 | R="\e[31m" 7 | G="\e[32m" 8 | N="\e[0m" 9 | 10 | VALIDATE(){ 11 | if [ $1 -ne 0 ]; then 12 | echo -e "$2 ... ${R} FAILURE ${N}" 2>&1 | tee -a $LOG 13 | exit 1 14 | else 15 | echo -e "$2 ... ${G} SUCCESS ${N}" 2>&1 | tee -a $LOG 16 | fi 17 | } 18 | 19 | if [ $USERID -ne 0 ]; then 20 | echo -e "${R} You need to be root user to execute this script ${N}" 21 | exit 1 22 | fi 23 | 24 | yum update –y &>>$LOG 25 | 26 | VALIDATE $? "Updating YUM" 27 | 28 | wget -O /etc/yum.repos.d/jenkins.repo \ 29 | https://pkg.jenkins.io/redhat-stable/jenkins.repo &>>$LOG 30 | 31 | VALIDATE $? "Adding Jenkins Repo" 32 | 33 | rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key &>>$LOG 34 | 35 | VALIDATE $? "Import Jenkin key" 36 | 37 | yum upgrade -y &>>$LOG 38 | 39 | VALIDATE $? "Upgrade YUM" 40 | 41 | amazon-linux-extras install java-openjdk11 -y &>>$LOG 42 | 43 | VALIDATE $? "Installing OpenJDK 11" 44 | 45 | yum install jenkins -y &>>$LOG 46 | 47 | VALIDATE $? "Installing Jenkins" 48 | 49 | systemctl enable jenkins &>>$LOG 50 | 51 | VALIDATE $? "Enable Jenkins" 52 | 53 | systemctl start jenkins &>>$LOG 54 | 55 | VALIDATE $? "Starting Jenkins" 56 | 57 | # lsss &>>$LOG 58 | # VALIDATE $? "creating error" 59 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | ### Shell Scripting 2 | 3 | **YouTube PlayList: https://www.youtube.com/playlist?list=PL1jY4BuFJn1cLJ2WCSeQbY0g4ye9gOgEI** 4 | 5 | I am going to cover everything in shell scripting from basics to advanced. 6 | 7 | **Pre-requisite:** Linux basic knowledge 8 | 9 | #### Environment Setup 10 | 11 | https://www.youtube.com/watch?v=AZEX9f_kXcE&list=PL1jY4BuFJn1cLJ2WCSeQbY0g4ye9gOgEI&index=1&t=489s 12 | 13 | * You should have AWS account 14 | * Personal laptop with the below tools 15 | * Putty 16 | * Super Putty 17 | * WinScp 18 | * Notepad++ 19 | 20 | ![alt text](shell.jpg) 21 | 22 | ### OS used 23 | 24 | I am mostly using AWS Linux 2. You can use any OS like Ubuntu, Centos, etc. Few commands will be changed based on OS. 25 | 26 | * For Ubuntu username is ubuntu. 27 | * For Centos username is centos. 28 | * For AWS Linux 2 username is ec2-user. 29 | 30 | -------------------------------------------------------------------------------- /hello-world.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Hello World" -------------------------------------------------------------------------------- /shell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/techworldwithsiva/shell-scripting/6c9040e368fb75ee886c97d9612e1fff3f19ecc1/shell.jpg --------------------------------------------------------------------------------