Reputation: 11
HI all i am newbie to scripting, i am here with problem ,that i am not able to pass command line variable to my script .
biz$: ./myproject.sh -x file2
My(given) myproject has these contents:
Type ="" //here i pass first argument
while [ $# -gt 0]
case "$1" in
-x) shift; type = "x" >&2;shift ;;
-y) shift; type = "y" >&2;shift ;;
###################################################
BEGIN{
if ($7 == '/'){
if ($2 != "zzzz"){
printf ("error",$0);
if ($3 < 111){
printf ("error", $0);
}
file = " " //here i want to pass my argument file2.
Please help me out to solve this, i am not able to move furthur without solving this, i am new guy to scripting. I cant cange $2 $3 $7..Experts pls i need your suggestion.
Upvotes: 0
Views: 15519
Reputation: 1
#!/bin/sh
# First line above, if this is a bourne shell script
# If this is a bash script use #!/bin/bash
# Assume this script is called from the command line with the following:
# ./myproject.sh -x file2 -y one two 110 four five six /
#Type ="" \\ here i pass first argument
# Comments are preceeded with # followed by a space
# No spaces around = for assignment of values
# Empty string "" not necessary
Type= # Here i pass first argument
#while [ $# -gt 0] # Spaces required just inside []
while [ $# -gt 0 ]
do
case "$1" in
# -x) shift; type = "x" >&2;shift ;;
# >&2 Redirects standard out to standard error (stdout, stderr)
# and usually is not needed unless explicitly generating error
# messages
# Type is not the same as type; however, you are trying to
# load the file variable
-x) shift; file=$1; shift ;;
-y) shift; Type=y # Get rid of -y only
;;
one) if [ "$7" = '/' ] # Space around = for tests
then
echo error $0 >&2
fi
if [ "$2" != zzzz ]
then
echo $2 is not equal to zzzz
fi
if [ "$3" -lt 111 ] # -lt is less than
then
echo "$3 is less than 111"
fi
break # break out of while loop
;;
esac
echo Cmd Ln Args left: "$@"
done
echo file: $file, Type: $Type, \$3: $3, \$7: $7
####################################################
# The code below is awk code. Its functionality was
# placed under case one above
# BEGIN{
# if ($7 == '/'){
# if ($2 != "zzzz"){
# printf ("error",$0);
#
# if ($3 < 111){
# printf ("error", $0);
# }
#
# file = " " //here i want to pass my argument file2.
OUTPUT:
Cmd Ln Args left: -y one two 110 four five six /
Cmd Ln Args left: one two 110 four five six /
error ./myproject.sh
two is not equal to zzzz
110 is less than 111
file: file2, Type: y, $3: 110, $7: /
Upvotes: 0
Reputation: 812
I believe that you are using BASH and you want to obtain the command line parameters into two variable inside your script. In which case, the professional approach is to use 'getopts'
Please refer to this link : bash command line arguments for further details.
Upvotes: 4