mv using variables


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers mv using variables
# 1  
Old 12-04-2009
mv using variables

Hi I am trying to write a script that will do a test on a file name, and then move files in batches to newly created directories. For now I am testing it by having the script search for a single file. Everything seems to work (the script does create the directories) but can't get the file to actually move! Can anyone tell me what is wrong with the indicated line? Thanks! I am on a MacBook and here is the script:

#!/bin/sh

filecount=1
mkdir $filecount

for FILE in $DSC*
do
if [ $FILE != "test.sh" ]
then
if [ $FILE = "DSC03278.JPG" ]
mv $FILE $filecount #I think my problem is here
else #bumps filecount - will later be used to skip over marker shots
let "filecount=filecount + 1"
#mkdir $filecount
fi
fi
done
# 2  
Old 12-04-2009
What is $DSC?

Code:
for FILE in $DSC*

Perhaps you should remove the $ there?

Code:
for FILE in DSC*

Also

Code:
let "filecount=filecount + 1"

Should be

Code:
let filecount=$filecount+1

In addition, you've missed a "then" on your second "if" statement.

You should also quote $FILE when referring to it in case your filenames contain spaces.


Code:
#!/bin/sh

filecount=1
mkdir $filecount

for FILE in DSC*; do
  if [ "$FILE" = DSC03278.JPG ]; then
    mv "$FILE" $filecount
  else
    let filecount=$filecount+1
    mkdir $filecount
  fi
done

This doesn't really answer your question!

What is a "batch"?

Last edited by Scott; 12-04-2009 at 08:28 PM..
# 3  
Old 12-04-2009
scottn believe it or not - you did fix it! It was sloppy code that was tripping it up.

I am trying to run this for a group of files (the parameters for the IF will soon change once I figure out a bit of python) - so I called it a batch. The current IF was just an easy way to do a proof of concept for the rest of the code.

Out of curiosity: what if I wanted to make the if statement wild? For instance:

Code:
if [ $FILE = "DSC0328*" ]??

I know this is wrong because it will treat * as part of the string, but I can't figure out the right combo.

Thanks again!
# 4  
Old 12-04-2009
You don't really need the "if" at all.

The for-loop will give you all the DSC* files.

Code:
$ touch DSC1 DSC2 BLAH DSC3

$ ls -l

-rw-r--r--  1 scott  staff  0 Dec  5 02:28 BLAH
-rw-r--r--  1 scott  staff  0 Dec  5 02:28 DSC1
-rw-r--r--  1 scott  staff  0 Dec  5 02:28 DSC2
-rw-r--r--  1 scott  staff  0 Dec  5 02:28 DSC3

$ for FILE in DSC*; do
>  echo $FILE
>done


DSC1
DSC2
DSC3

# 5  
Old 12-04-2009
Right! Much newbie thanks!
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to pass variables into anothother variables?

Below are three variables, which I want to pass into variable RESULT1 username1=userid poihostname1=dellsys.com port1=8080 How can I pass these variables into below code... RESULT1=$((ssh -n username1@poihostname1 time /usr/sfw/bin/wget --user=sam --password=123 -O /dev/null -q... (4 Replies)
Discussion started by: manohar2013
4 Replies

2. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

3. Shell Programming and Scripting

BASH arrays and variables of variables in C++

Sometimes it is handy to protect long scripts in C++. The following syntax works fine for simple commands: #define SHELLSCRIPT1 "\ #/bin/bash \n\ echo \"hello\" \n\ " int main () { cout <<system(SHELLSCRIPT1); return 0; } Unfortunately for there are problems for: 1d arrays:... (10 Replies)
Discussion started by: frad
10 Replies

4. Shell Programming and Scripting

Running a script with multiple variables like 25 variables.

Hi All, i have a requirement where i have to run a script with at least 25 arguements and position of arguements can also change. the unapropriate way is like below. can we achieve this in more good and precise way?? #!/bin/ksh ##script is sample.ksh age=$1 gender=$2 class=$3 . . .... (3 Replies)
Discussion started by: Lakshman_Gupta
3 Replies

5. Shell Programming and Scripting

Variables

I need to define a variable of variable. I'll try to explain it. I've a list: LIST="aaa bbb ccc"I need to do something like: for word in LIST ;do res_$word=`ls $word` done This doesn't work. Any idea? Thanks (3 Replies)
Discussion started by: kekaes
3 Replies

6. Shell Programming and Scripting

Using cd on Variables

I can't for the love of me figure out how to work with double quotes and single quotes in variables in bash scripts. For instance, I added the following line to my .bash_aliases file: WINDOWS="'/host/Documents and Settings/Solar Zenith/My Documents'"; I want this so that I can go straight to 'My... (2 Replies)
Discussion started by: solar zenith
2 Replies

7. Programming

How to convert byteArray variables to HexaString variables for Linux?

Hello everybody, I am having problem in converting byte array variables to Hexa String variables for Linux. I have done, converting byte array variables to Hexa String variables for Windows but same function doesn't work for linux. Is there any difference in OS ? The code for Windows is given... (2 Replies)
Discussion started by: ritesh_163
2 Replies

8. Shell Programming and Scripting

naming variables with variables

Hello, FIRST QUESTION: I am writing a script in which a query is taken at the beginning of the script to be later used at the end. In the query, variables are generated from a loop, and I would like to assign the variable NAME (not value) with an appended 1, 2, 3, 4.....n. The number of... (2 Replies)
Discussion started by: Allasso
2 Replies

9. Shell Programming and Scripting

non-variables with $

I am writing a csh script and I need to echo a word that starts with $ and is not a variable. How do I do that? (3 Replies)
Discussion started by: oprestol
3 Replies

10. UNIX for Dummies Questions & Answers

Using Variables to Set Other Variables

I have a script that I'm trying to shorten (below) by removing repetitive code. if ] then commodity_ndm_done=Y fi if ] then customer_ndm_done=Y fi if ] then department_ndm_done=Y fi if ] then division_ndm_done=Y fi (3 Replies)
Discussion started by: superdelic
3 Replies
Login or Register to Ask a Question