Sponsored Content
Top Forums Shell Programming and Scripting Passing arguments from a bash shell script to a command Post 302601811 by Corona688 on Friday 24th of February 2012 12:30:39 PM
Old 02-24-2012
Yes, set -- would mess up your arguments if you were still using the arguments at the time. Good thinking realizing that.

In the case of spaces in filenames, I'd use flags like you had, but use the set -- trick as well:

Code:
#!/usr/bin/bash                                                                                                        
 
wd=$(dirname "$0")
pyth=$(which python)
latex=$(which latex)
xelatex=$(which xelatex)
mkindex=$(which makeindex)

input="$wd/ALMSGrammar.txt"
texfile="$wd/build/ALMSGrammar.tex"

INDICES=
LABEL_SLOTS=
CATEGORY_LIST=

while getopts "isc:" opt; do
  case $opt in
    i)
      INDICES=1
      ;;
    s)
      LABEL_SLOTS=1
      ;;
    c)
      CATEGORY_LIST=$OPTARG
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      echo "Usage:" >&2
      echo -e "   -i \tgenerate indices" >&2
      echo -e "   -s \tlabel slots" >&2
      exit 1
      ;;
  esac
done

set -- "$input" "$texfile"

[ -z "$INDICES" ] || set -- "$@" "--indices"
[ -z "$LABEL_SLOTS" ] || set -- "$@" "--label-slots"

[ -z "$CATEGORY_LIST" ] || set -- "$@" "--categories" "$CATEGORY_LIST"

$pyth "$wd/texify_grammar.py" "$@"

pushd "$wd/build"

if [ ! -z $INDICES ]
then
  "$latex" ALMSGrammar.tex
  "$mkindex" tokens
  "$mkindex" categories
  "$mkindex" todo
  "$latex" ALMSGrammar.tex
fi

"$xelatex" ALMSGrammar.tex
popd

mv "$wd/build/ALMSGrammar.pdf" "$wd"
open "$wd/ALMSGrammar.pdf"

You can also use arrays instead of "set --" to keep an argument list, but "set --" works in any bourne shell -- bash, ksh, old-fashioned sh, zsh, and more. This script would be simple to use anywhere. BASH arrays on the other hand only work when BASH is available...

---------- Post updated at 11:30 AM ---------- Previous update was at 11:26 AM ----------

As for what || and && do:

Code:
true && echo "&& checks if the previous command succeeded.  This should print."
false && echo "This shouldn't print because 'false' returns error"
true || echo "|| checks if the previous command failed.  This won't print."
false || echo "...but this will."

true && true && true && echo "You can chain on more than one."

true &&
        echo "You can break && statements across lines to avoid really wide scripts"

echo "Pipes also can be broken across lines like that" |
        cat

This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. Solaris

Passing arguments to a shell script from file while scheduling in cron

Hi, I have a shell script Scp_1.sh for which I have to pass 2 arguments to run. I have another script Scp_2.sh which in turns calls script Scp_1.sh inside. How do I make Scp_1.sh script to read arguments automatically from a file, while running Scp_2.sh? -- Weblogic Support (4 Replies)
Discussion started by: weblogicsupport
4 Replies

2. Shell Programming and Scripting

passing runtime arguments to a shell script...

hi I am new to shell programming.....my question is while running one of my shell program it stops in between to accept input from the user and proceeds furthur after giving input....I want to know whether I can set this input through some files so that the shell acript reads the input from the... (10 Replies)
Discussion started by: santy
10 Replies

3. Shell Programming and Scripting

Help required in passing multiple arguments from a shell script to a pl/sql block

Hi, hope everyone are fine. Please find my issue below, and I request your help in the same In a configuration file, i have a variable defined as below TEST = 'One','Two','Three' I am trying to pass this variable in to a sql script which is define in a pl/sql block as follows, In the... (1 Reply)
Discussion started by: ramakanth_burra
1 Replies

4. Shell Programming and Scripting

passing arguments to unix command or script inside tclsh

hi everobody kindly consider the following in tclsh I understand that we can do the following %exec UnixCmd arg1 arg2 but if I assinged the arguments to a list insde tclsh how can I use them back i.e %set ArgList %exec UnixCmd %exec Unixcmd $list %exec all the... (1 Reply)
Discussion started by: Blue_shadow
1 Replies

5. Programming

Passing arguments from java to script shell

Hello Please i want to pass parameter (the string s) to the shell script: Quote: String s="Hello"; Process process = Runtime.getRuntime().exec("sh script1.sh"); How can i do please? Thank you (0 Replies)
Discussion started by: chercheur857
0 Replies

6. Shell Programming and Scripting

Passing multiple arguments to a shell script

Hi Gurus, Need some help with the shell scripting here. #!/bin/ksh ps -ef | grep -i sample.ksh | grep -v grep > abc.txt if then echo "sample.ksh is executing" else echo "sample.ksh is not executing" fi (1 Reply)
Discussion started by: jayadanabalan
1 Replies

7. Shell Programming and Scripting

Passing arguments to a bash script

Hi, I wanted to pass an argument to a bash script. So that the argument is used inside the awk command inside the bash script. I know the noraml way of passing argument to a bash script as below : sh myScript.sh abc Inside the bash script i can use like this myArg1=$1 wc $myArg But... (8 Replies)
Discussion started by: shree11
8 Replies

8. Shell Programming and Scripting

Passing arguments to interactive program through bash script, here document

Dear Users, I have installed a standalone program to do multiple sequence alignment which takes user parameters to run the program. I have multiple sequence files and want to automate this process through a bash script. I have tried to write a small bash code but its throwing errors. Kindly... (13 Replies)
Discussion started by: biochemist
13 Replies

9. Shell Programming and Scripting

C shell script passing arguments problem.

I found something insteresting when I tested passing arguments into my scripts. My scripts is as below. % cat passarg.env #!/bin/csh echo "passarg: argv = $argv argv = $argv" passarg1.env $* % cat passarg1.env #!/bin/csh echo "passarg1: argv = $argv argvp=$argv" set str = "test... (5 Replies)
Discussion started by: bestard
5 Replies

10. UNIX for Beginners Questions & Answers

Passing Arguments to shell script from file is not working as expected.

Hi All, I have below simple shell script in cloudera quick start vm cenos 6 which copy file from source to destination. # file_copy.sh source_dir = ${source_dir} target = ${target_dir} cp source_dir target and my parameter file is like below #parameter_file.txt source_dir =... (4 Replies)
Discussion started by: Narasimhasss
4 Replies
All times are GMT -4. The time now is 07:08 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy