Using variable as a file name


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using variable as a file name
# 1  
Old 03-18-2013
Using variable as a file name

Ok, I will admit right up front that this is stupid, and I shouldn't be hung up on this. I have a script that checks the unallocated areas of space, and checks to see if they are empty or not. If they aren't empty, I run xxd to allow for more analysis.

I have commented out the rest of the script for now. The following section checks if they are empty, and either disregards or creates the output file.

Code:
sum ./$iname/Unallocated*.raw | while read line
	do
		if [ `echo $line | awk '{print $1}'` = 00000 ]
			then
				echo $line | awk '{print $3 " is empty, disregarding."}'

			else
				echo $line | awk '{print $3 " is not empty.  Creating XXD report"}'
				ofname=`echo $line | awk '{print $3}'`				
				echo "xxd -a > ${ofname}.txt"
		fi
	done

No matter what I do, I can not get it to create the output files using the ofname variable. If I do echo $ofname, it shows correctly, but when I put it the xxd command, it's blank. Using echo to echo the xxd command back shows the filename as there.
# 2  
Old 03-18-2013
Just a thought...

Code:
echo "xxd -a > $ofname.txt"

# 3  
Old 03-18-2013
I don't see where xxd runs. How about:
Code:
xxd -a > $ofname.txt

# 4  
Old 03-18-2013
Quote:
Originally Posted by hanson44
I don't see where xxd runs. How about:
Code:
xxd -a > $ofname.txt

As I said in the text, I was using echo to echo back the xxd command as it should be ran. This echos back the command just fine, file name and all. When I actually run xxd (not echo'ed), it doesn't have the file name. Usinb bash -xv, it shows the command as being 'xxd -a', with no file name attached at all.

I have tried putting the variable in (), {}, and any other crazy idea I had, and still nothing.
# 5  
Old 03-18-2013
Any chance the output file name has embedded blanks or other special characters that are confusing bash? In other words, what are typical examples of what $ofname translates to?
# 6  
Old 03-18-2013
Quote:
Originally Posted by hanson44
Any chance the output file name has embedded blanks or other special characters that are confusing bash? In other words, what are typical examples of what $ofname translates to?
I thought of that. But no.

The file names are generated by the script in the form of Unallocated-[start sector]-[end sector].raw, where [] denotes a variable. These files are created as expected.

Full script (keep in mind most of it is commented out) :

Code:
#!/bin/bash -xv

image="$1"

#Create a non-spaced, non-extensioned version of the filename for a folder name.
x="$image"
y=${x%%.*}
iname=`echo ${y##*/} | sed 's/ /_/g'`

#Determine if a folder with the same name as the image file exists, if not create.
#if [ -d $iname || -d Reports ]
#	then	
#		read  -a c -p"$iname or Reports folder(s) exists, continuing may overwrite previous data.  Continue? (y/n)"
#		if [ $c = n ]
#			then
#				exit 1
#		fi
#	else
#		echo "folder does not exist, creating"
#		mkdir $iname Reports
#fi
#
#Run MMLS to find empty portions of the disk, and find entries with 'Unallocated' in them.
#mmls "$image" | grep Unallocated | while read line
#	do
#		ssect=`echo $line | awk '{print $3+0}'`
#		esect=`echo $line | awk '{print $4+0}'`
#		bleng=`echo $line | awk '{print $5*512}'`
#		fname=`echo $line | awk '{print "Unallocated-'${ssect}'-'${esect}'"}'`
#		ewfexport -f raw -S 0 -o $ssect -B $bleng -t ./$iname/$fname "$image"
#	done
#
#Determine if a file is empty or contains data.
#echo "Results of sum command against all generated raw files" > $iname-sumresults.txt
#sum ./$iname/Unallocated*.raw >> $iname-sumresults.txt
sum ./$iname/Unallocated*.raw | while read line
	do
		if [ `echo $line | awk '{print $1}'` = 00000 ]
			then
				echo $line | awk '{print $3 " is empty, disregarding."}'

			else
				echo $line | awk '{print $3 " is not empty.  Creating XXD report"}'
				ofname=`echo $line | awk '{print $3}'`				
				`xxd -a > "$ofname".txt`
		fi
	done


Last edited by twjolson; 03-18-2013 at 04:20 PM..
# 7  
Old 03-18-2013
I can't find the problem. Sorry.

I would try making some other intermediate variables, to better follow what is happening and track down where the glitch is.

For example, I might change the following:
Code:
if [ `echo $line | awk '{print $1}'` = 00000 ]

to something like (with better name than "var_x":
Code:
var_x=`echo $line | awk '{print $1}'`
echo var_x = $var_x >> logfile
if [ "$var_x" = "00000" ]

Why is the xxd command in back-ticks, since results not assigned to anything? Just wondering.
Code:
`xxd -a > "$ofname".txt`

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find matching file in bash with variable file names but consisent prefixs

As part of a bash the below line strips off a numerical prefix from directory 1 to search for in directory 2. for file in /home/cmccabe/Desktop/comparison/missing/*.txt do file1=${file##*/} # Strip off directory getprefix=${file1%%_*.txt} ... (5 Replies)
Discussion started by: cmccabe
5 Replies

2. Shell Programming and Scripting

Calling a variable of variable from a file

Hi All, I have file which have looks like below abc=${def} def=${efg} efg= "this is the actual value" based on "abc" value I have to call "efg" value , Am using below lines but it is not working #!/bin/bash source file.txt echo $abc Please wrap all code, files, input &... (5 Replies)
Discussion started by: Prashanth.K
5 Replies

3. Shell Programming and Scripting

To print value for a $variable inside a $variable or file

Hi guys, I have a file "abc.dat" in below format: FILE_PATH||||$F_PATH TABLE_LIST||||a|b|c SYST_NM||||${SRC_SYST} Now I am trying to read the above file and want to print the value for above dollar variables F_PATH and SRC_SYST. The problem is it's reading the dollar variables as... (5 Replies)
Discussion started by: abcabc1103
5 Replies

4. Shell Programming and Scripting

Two question: remove from the other variable or file to get another variable or file

Question 1: A="a b c d e f g 1 2 3 4 5" B="c 3" get C="a b d e f g 1 2 4 5" Question 2: cat file1 a b c (6 Replies)
Discussion started by: yanglei_fage
6 Replies

5. Shell Programming and Scripting

Modify a file by another file: add new line and variable after string is found

hello, I have problem with writing/adjusting a shell script. I searched forum and unfortunately couldn't write scipt based on the information I found. I never wtire such so it's hard for me and I do need to modify one script immediately. case looks like: 1. 'file' that needs to be modified... (3 Replies)
Discussion started by: bipbip
3 Replies

6. Red Hat

How to pass value of pwd as variable in SED to replace variable in a script file

Hi all, Hereby wish to have your advise for below: Main concept is I intend to get current directory of my script file. This script file will be copied to /etc/init.d. A string in this copy will be replaced with current directory value. Below is original script file: ... (6 Replies)
Discussion started by: cielle
6 Replies

7. Shell Programming and Scripting

cut the variable from the line and use it to find the file and read the content of that file

Hi, I am working on one script..I am having files in the below format file 1 (each line is separated with : delimeter) SPLASH:SPLASH:SVN CIB/MCH:MCH:SVN Now I want from file 1 that most left part of the first line will store in... (6 Replies)
Discussion started by: rohit22hamirpur
6 Replies

8. Shell Programming and Scripting

variable within a variable from file

script below sets variable "var". Then sets "var2" (which contains "var" whithin it, see test.config file) from config file. test.sh ---------------------------- #!/bin/sh var="varvalue" while read line do var2=${line} done <./test.config echo "var value is: $var" echo... (2 Replies)
Discussion started by: bcnjc
2 Replies

9. Shell Programming and Scripting

Split variable length and variable format CSV file

Dear all, I have basic knowledge of Unix script and her I am trying to process variable length and variable format CSV file. The file length will depend on the numbers of Earnings/Deductions/Direct Deposits. And The format will depend on whether it is Earnings/Deductions or Direct Deposits... (2 Replies)
Discussion started by: chechun
2 Replies

10. Shell Programming and Scripting

Reading variable from file variable values

Hi, Here is the output of lpstat. I would like to read value of Queue which is(abxxxxb1)and status that is DOWN in first line. i dont care what is in second line. any one can help me.thanks Queue Dev Status Job Files User PP % Blks Cp Rnk ------- ----- ---------... (5 Replies)
Discussion started by: sagii
5 Replies
Login or Register to Ask a Question