Shell Script behaviour and syntax


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Shell Script behaviour and syntax
# 1  
Old 04-13-2020
Shell Script behaviour and syntax

Here are the 3 scripts(FirstScrpt.sh,firstcallScrpt.sh,startProcess.sh) that were running in the server for the past several years.
I understand the way it is written is that for every 1 hour 'firstcallScript.sh' is being called in that it kills the pid of 'startProcess.sh'
and starts again.

2 things I noticed
1. Value of pid.txt never changes if it is being is killed and created every hour.
2. It never runs in the background even when it is run with '&' like (./FirstScrpt.sh &)

FirstScrpt.sh
Code:
#!/bin/bash

if [ $# -ne 1 ]
then
	echo "Usage:  $0 test|prod"
	exit 1
fi
envRun=$1

  echo "Level is :  ${envRun}"
	while [ 1 ]
	do
	cat pid.txt | xargs -l1 kill
	./firstcallScript.sh ${envRun}
	sleep 3600
	done

firstCallScript.sh
Code:
#!/bin/bash

if [ $# -ne 1 ]
then
	echo "Usage:  $0 test|prod"
	exit 1
fi
envRun=$1

if [ $envRun = "test" ] 
then
  echo "Level is  :  ${envRun}"
     ./startProcess.sh ${envRun}
   
 else
   echo "Level is test Invoke test script :  ${envRun}"
   	./startProcess.sh ${envRun}
	
fi

startProcess.sh

Code:
#!/bin/bash 
envRun=$1
echo "${envRun}"
echo "I'm a Linux user."
echo $! > pid.txt


Last edited by Cybora; 04-13-2020 at 04:53 PM.. Reason: Edited the firstScript for 1 hour of sleep
# 2  
Old 04-13-2020
And the question is?
# 3  
Old 04-13-2020
1. Value of pid.txt never changes if it is being is killed and created every hour. why ? i guess it should be chnaged after every hour of killing
2. It never runs in the background even when it is run with '&' like (./FirstScrpt.sh &) why doe sit show on the screen
# 4  
Old 04-14-2020
1. In StartProcess.sh you only set an environment variable and echo a couple of messages. $! is supposed to be the PID of the last command run in the background, but nothing is being run in the background.

2. So are you saying that if you type ./FirstScrpt.sh & that the prompt doesn't return and the script has to be killed (or CTRL-C) to get control back to your invoking shell?
# 5  
Old 04-14-2020
The PID never changes because it takes the 'value' of the current process id of the shell.
There is NO subprocess - to my understanding.

The PID would only change upon something like:
Code:
echo $!
( echo $! ) &
echo $!
( echo $! ) &
echo $!

In a similar way, you could use the shell id:
Code:
echo $$
(echo $$) &

Hope this helps
# 6  
Old 04-14-2020
For Chuber:
1. In StartProcess.sh you only set an environment variable and echo a couple of messages. $! is supposed to be the PID of the last command run in the background, but nothing is being run in the background.
I removed a line of code to post here. It actually calls a process /opt/$[folderpath}/bin/java ${JAVA_OPTIONS} WregProcessor.jar > /dev/null 2>&1 &

2. So are you saying that if you type ./FirstScrpt.sh & that the prompt doesn't return and the script has to be killed (or CTRL-C) to get control back to your invoking shell? Yes

For Sea: the code is below is typed 2 times is this how it should be ?

Code:
echo $!
( echo $! ) &
echo $!
( echo $! ) &
echo $!

# 7  
Old 04-14-2020
I know it looks that way - because it is, yes, intentional.
Just have a look Smilie

EDIT:
But it seems my previous terminal was borked in some way, only 2 lines should be enough.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with if statement syntax in shell script

I want to make the file test condition a variable ($Prmshn in code below). My goal is to use something like the first three unsuccessful if statetments since the 'if #!/bin/ksh test_input() { Prmshn=${1} InFLNm=${2} ifReq="-$Prmshn $InFLNm" #the following three if statments fail: #if ] ;... (10 Replies)
Discussion started by: ms63707
10 Replies

2. Shell Programming and Scripting

Bash syntax behaviour : [[ vs [

Hello. In the following : RESTORE_FF contain a file name : a_file.tar.gz I am testing in a directory if "a_file.tar.gz" exists and or if any file like "a_file.tar.gz" exists. So "a_file.tar.gz" will give me file exists So "a_file.tar.gz." will give me file exists So... (5 Replies)
Discussion started by: jcdole
5 Replies

3. Shell Programming and Scripting

syntax error in shell script

I am creating a shell script. In which, I need to get server name and server IP. I used this command in script. servername=`cat /etc/hosts|grep `eval hostname`|awk '{print $2}'` however, when execute script or put set -x to debug, it return: line 13: syntax error at line 13: `|' unexpected... (4 Replies)
Discussion started by: duke0001
4 Replies

4. Shell Programming and Scripting

shell script | bc syntax format

sorry but need help http://i.investopedia.com/inv/articles/site/CalculationEMA.gif trying to achieve ema in script I have this syntax which errors ema=` ; the 0.153846154 ='s Smoothing Factor really appreciate help (3 Replies)
Discussion started by: harte
3 Replies

5. Shell Programming and Scripting

Syntax error calling TCL script from shell script

hello everyone i am beginner on shell scripting .and i am working on my project work on ad hoc network i wrote a batch (.sh) to do a looping and execute a tcl script i wrote before in each iteration ..but i got this problem " syntax error near unexpected token `('... (1 Reply)
Discussion started by: marcoss90
1 Replies

6. Shell Programming and Scripting

Help Syntax Shell-Script

Hi Guys, iīve a question ... but itīs a litte bit tricky: iīve a 3 php-scripts which runīs via cron at night. These script reads an xml-file a writes it in an MySQL-DB. I named them (for example here ) Script1 - Script3. The XML-Files i named xml1 - xml3. Now, iīve build a Batch-file,... (10 Replies)
Discussion started by: jackcracker
10 Replies

7. Shell Programming and Scripting

How to Check Shell script syntax w/o executing

Hello All, I looking for a way to verify the correction of shell script syntax. Is there any switch like -c in perl which do this in shell ? Thank You. (1 Reply)
Discussion started by: Alalush
1 Replies

8. Shell Programming and Scripting

Basic Shell script syntax help

Hi All, I am new to shell scripting. I have a variable which holds a numeric value.I have to check whether this variable holds a value between(0- 8),(8-17)(17-24).How do i write this syntax using if in shell scripting. Thanks Vignesh (2 Replies)
Discussion started by: vignesh53
2 Replies

9. Shell Programming and Scripting

Shell script syntax checker

I have a rather big script that i have written in ksh and it is falling over in two places with a 'test argument' error. I know this usually means that the if statement is not correct, but it is fine. I have looked through the rest of the script for any odd brackets or ` marks, but can't see... (2 Replies)
Discussion started by: handak9
2 Replies

10. Shell Programming and Scripting

any explanation for thsi shell script behaviour

hello whats the difference between excuting a shell script as a)sh myscript.sh b). ./myscript.sh i noticed that my shell script works fine when i run it as . ./myscript .sh but fails when i run it as sh myscript.sh could anybody explain why. the shell script is very simple ... (9 Replies)
Discussion started by: xiamin
9 Replies
Login or Register to Ask a Question