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


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Passing Arguments to shell script from file is not working as expected.
# 1  
Old 02-11-2019
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.

Code:
# file_copy.sh
source_dir =  ${source_dir}
target = ${target_dir}
cp source_dir target

and my parameter file is like below

Code:
#parameter_file.txt
source_dir = "/home/cloudera/source/source_files.txt"
target_dir = "/home/cloudera/target/test.txt"

I am using below command to execute this script

Code:
sh file_copy.sh $(< parameter_file.txt)

after executing I am getting below error

Code:
ftp.sh: line 3: source_dir: command not found
ftp.sh: line 4: target: command not found
cp: cannot stat `source_dir': No such file or directory

Can anyone suggest where I am doing mistake?

Thanks,
LakshmiNarasimha


Moderator's Comments:
Mod Comment Please use CODE tags for data / output as well, as required by forum rules

Last edited by RudiC; 02-12-2019 at 08:12 AM.. Reason: Added CODE tags.
# 2  
Old 02-12-2019
Shell script syntax does not allow space in assignments, so:
Code:
source_dir =  ${source_dir}

should be
Code:
source_dir=${source_dir}

Also, reading the parameter file does not work that way..
You can use the source or . command to do this, but also here the should be no spaces in assignments in that source file.

Code:
source ./parameter_file

Instead of sourcing the parameter file, you can also get the information with the read command.

Lastly, if you want to reference a shell variable, you need to prepend a $-sign.
This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 02-12-2019
On top of what Scrutinizer already said,

Code:
source_dir=${source_dir}
target=${target_dir}

are two expensive No-Ops, as the value of source_dir is replaced by the value of source_dir etc. So, the entire file_copy.sh script would reduce to
Code:
cp $source_dir $target_dir

, or, with a sanitized parameter file
Code:
. parameter_file.txt
cp $source_dir $target_dir


Last edited by RudiC; 02-12-2019 at 08:07 AM..
This User Gave Thanks to RudiC For This Post:
# 4  
Old 02-12-2019
Hi RudiC/Scrutinizer,

Thank you for the inputs.
As per your replay I changed my code like below and getting expected results.

Code:
# file_copy.sh
cp  ${source_dir} ${target_dir}

Code:
#parameter_file.txt
source_dir = "/home/cloudera/source/source_files.txt"
target_dir = "/home/cloudera/target/test.txt"

Code:
source file_copy.sh parameter_file.txt

Thanks,
LakshmiNarasimha

Last edited by Narasimhasss; 02-20-2019 at 03:22 AM..
# 5  
Old 02-12-2019
As we don't know what ftp.sh nor ftp_parameters.txt are, we can't comment on their functionality. Certainly they don't have much in common with file_copy.sh nor parameter_file.txt, as the syntax errors Scrutinized commented on are still around in the latter, and we don't see the former used anywhere. Maybe, if ftp.sh contains sourcing its first positional parameter (which needs to be sanitized, as repeated before), and then calls / sources file_copy.sh, we get to something working.
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Shell scripting with passing arguments

Hi All, I am using the script for creating local queue and passing the arguments while running the script as below n=0 while do e=`expr $n + 3` echo 'DEFINE QL('$e') MAXDEPTH('$6') MAXMSGL('$7') DEFPSIST('$8') '$9'' | /apps/mqm_opt/bin/runmqsc $2 n=`expr $n + 1` done Running the... (5 Replies)
Discussion started by: Anusha M
5 Replies

3. 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

4. Shell Programming and Scripting

To run a local shell script in a remote machine by passing arguments to the local shell script

I need to run a local shell script on a remote machine. I am able to achieve that by executing the command > ssh -qtt user@host < test.sh However, when I try to pass arguments to test.sh it fails. Any pointers would be appreciated. (7 Replies)
Discussion started by: Sree10
7 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 arguments from a bash shell script to a command

I'm pretty new to bash scripting and I've found myself writing things like this (and the same with even more nesting): if $CATEGORIES; then if $LABEL_SLOTS; then $pyth "$wd/texify_grammar.py" "$input" "$texfile" "--label-slots" "--categories" "$CATEGORY_LIST" ... (9 Replies)
Discussion started by: burbly
9 Replies

7. 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

8. Shell Programming and Scripting

Passing Arguments in Shell Scripts

Hello everybody! First time posting here:) Right, I am trying to pass arguments in my shell scripts using $1, $2 and $3 etc using if else statement........ This is my shell script which is based on serching the google website #!/bin/sh wget -t1 -E -e robots=off - -awGet.log -T 200 -H... (47 Replies)
Discussion started by: kev_1234
47 Replies

9. 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

10. 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
Login or Register to Ask a Question