Preview what would execute in my shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Preview what would execute in my shell script
# 1  
Old 05-28-2010
Tools Preview what would execute in my shell script

I have written a shell script that takes options (-f and -p). The "-p" option will echo out to screen the commands that would execute if the script were run with the "-f". My code is:

Code:
 
if [ $4 != "-f" ]
then
PREVIEW="/usr/bin/echo PREVIEW MODE:"
else
PREVIEW=""
fi

and then I preface all commands with "$PREVIEW".

Is there a more savvy way of accomplishing the same thing???

Last edited by vbe; 05-28-2010 at 12:39 PM.. Reason: code tags please
# 2  
Old 05-28-2010
The shell's flexibility makes it hard to make a good general-purpose dry-run function. You can embed things that modify or execute things inside parameters as easily as anywhere else, so your method -- and most methods -- won't work in situations like these:
Code:
# command1 and command2 will still be executed
$PREVIEW grep needle haystack | command1 | command2
# command4 will still execute
$PREVIEW command3 `command4`
# N will still be incremented
$PREVIEW echo $((N++))

One way to do it may be to embed code in a here-document. There'd be a a lot of fiddly escaping involved to prevent variables and backticks from still evaluating right at runtime.
Code:
TMP=`mktemp`

# Open FD 5 writing to temp file
exec 5>"$TMP"
# Open FD 6 reading from temp file
exec 6<"$TMP"
# Delete temp file.  FD 5 and 6 will remain valid until closed.
rm "${TMP}"

cat <<EOF >&5
        # This won't run at all
        grep needle haystack | command1 | command2
        # command4 will still execute
        command3 `command4`
        # command4 won't execute
        command3 \`command4\`
        # N will still be incremented
        echo $((N++))
        # N will not be incremented
        echo \$((N++))
EOF

if [[ "${DRY_RUN}" == "Y" ]]
then
# Just print the contents of the temp file to the screen
        cat <&6
else
# Execute the script inside a new shell
        bash <&6
fi


Last edited by Corona688; 05-28-2010 at 01:59 PM..
# 3  
Old 05-28-2010
You may try following code, "set -o noexec" will be displayed, you will have to filter that out.

Code:
if [ $4 != "-f" ]
then
set -v
set -o noexec
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Batch script to execute shell script in UNIX server

Hi team, My requirement is to transfer pdf files from windows machine to unix server and then from that unix server we should sftp to another server. I have completed the first part i.e From windows to using to unix server with the help of psftp.exe code: psftp user@host -pw password <... (1 Reply)
Discussion started by: bhupeshchavan
1 Replies

2. Shell Programming and Scripting

How to execute one shell script after execution of another shell script?

I have a master shell script master.sh which will invoke 2 shell scripts (test1.sh,test2.sh). Both of these shell scripts will execute stored procedure. I will invoke test1.sh, test2.sh respectively. Now both of these scripts are executing parallel. But i want to invoke the 2nd script(test2.sh)... (3 Replies)
Discussion started by: vel4ever
3 Replies

3. Shell Programming and Scripting

Execute shell script without using sh

Hi Experts, I want to execute shell script(on HP-UX) wihout specifying interpreter. For e.g generally we use following command to execute shell sh test.sh but I want to execute it as test.sh currently if I execute directly it as test.sh it is giving error Commnd Not... (7 Replies)
Discussion started by: sai_2507
7 Replies

4. Shell Programming and Scripting

Dos batch script to execute unix shell script

Can anyone help me with a dos batch script to execute a shell script residing in an unix server. I am not able to use ssh. Thanks in advance (2 Replies)
Discussion started by: Shri123
2 Replies

5. UNIX for Dummies Questions & Answers

can't execute a shell script

Hi all, As i want to know how the shell command "nohup" worked.I logged in as the user named vincent through Gnome.Then i press ctrl+atl+F1 changed into a console and logged in as another user named kinsley.The user "kinsley" is added by me with "useradd",and now there's no HOME directory for... (6 Replies)
Discussion started by: homeboy
6 Replies

6. Shell Programming and Scripting

How to use ssh execute other shell script on other host (shell script include nohup)?

i want use ssh on the host01 to execute autoexec.sh on the host02 like following : host01> ssh host02 autoexec.sh autoexec.sh include nohup command like follwing : nohup /home/jack/deletedata.sh & after i execute ssh host02 autoexec.sh one the host01. i can't found deletedata.sh... (1 Reply)
Discussion started by: orablue
1 Replies

7. Shell Programming and Scripting

Execute unix shell script to text file using the script

Hi all, I am beginner in UNIX...I want to use unix shell script to create text.file...I know how to use using by command...can anybody tell me for the script? Thanks i changed the threads title from "tex file" to "text file", because "tex" would probably be misunderstood as reference to... (4 Replies)
Discussion started by: mastercar
4 Replies

8. Shell Programming and Scripting

not able to execute shell script

HI, bash-2.05# more mysqlstoporaclestart.sh #!/bin/sh mysqladmin -u root -pengineer shutdown su - oracle -c "bash /export/home/oracle/oracle.sh" bash-2.05# more /export/home/oracle/oracle.sh /oracle/bin/sqlplus "/as sysdba"<< EOF startup nomount... (2 Replies)
Discussion started by: prakash.gr
2 Replies

9. UNIX for Dummies Questions & Answers

Execute Shell Script

Hi all, I am begginer of UNIX . I dont know if i have a script written in korn shell with .ksh extention . If i want to execute that how can i do that? Can anybody suggest the best book to learn korn shell scripting. Thanks sam71 (1 Reply)
Discussion started by: sam71
1 Replies

10. Shell Programming and Scripting

How to execute shell Script?

I am new to UNIX , Can any one let me know how to execute shell script (i.e which command I have to use for the same). Any help would be appreciated. Thanks siva mymvs999@yahoo.com (3 Replies)
Discussion started by: siva
3 Replies
Login or Register to Ask a Question