Help can't get script to work how I need it to...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help can't get script to work how I need it to...
# 1  
Old 10-13-2008
Help can't get script to work how I need it to...

Hi thank you for anyone who responds.

Here is my script:
Code:
for i in `ls -1 | grep $1 | grep  $2`
do
x=`echo $i | sed 's/\.Sent/\.Done/g'`
echo mv $i DONE/$x
echo "Is this OK?"
read user_response

case $user_response in

"y"|"Y")
        mv $i DONE/$x
        echo mv $i DONE/$x;;
*)
        echo "No changes made ...";;

esac

done


The list it grabs is more than one file.
When i run this it asks me if "Is this OK?" for each file. I want it to just spit out the list then ask me, if I say yes, then i want it to move all the files it lists.

Thank you!!

Last edited by radoulov; 10-13-2008 at 04:07 PM.. Reason: added code tags
# 2  
Old 10-13-2008
Quote:
Originally Posted by llsmr777
Hi thank you for anyone who responds.

Here is my script:

Please enclose code in [code] tags. (Edit your original post.)
Quote:
Code:
for i in `ls -1 | grep $1 | grep  $2`


You don't need -1 when the output is not going to a terminal.

You don't need two instances of grep; use grep -e "$1" -e "$2".

You probably don't need ls, either, and it will break you script if any filenames contain spaces.

If you are trying to get files with a certain pattern, use wildcards, e.g.:

Code:
for i in *$1*$2*

Quote:
Code:
do
x=`echo $i | sed 's/\.Sent/\.Done/g'`


You don't need sed:

x=${i%%.Sent*}.Done${i#*.Sent}
Quote:
Code:
echo mv $i DONE/$x
echo "Is this OK?"
read user_response

case $user_response in

"y"|"Y")
        mv $i DONE/$x
        echo mv $i DONE/$x;;
*)
        echo "No changes made ...";;

esac

done

The list it grabs is more than one file.
When i run this it asks me if "Is this OK?" for each file. I want it to just spit out the list then ask me, if I say yes, then i want it to move all the files it lists.

If you don't want to be asked for every file, don't put the question inside the loop. Build a list and present that outside the loop.
# 3  
Old 10-13-2008
Thank you for your reply.

I thought my case statement was outside the loop?
# 4  
Old 10-13-2008
Quote:
Originally Posted by llsmr777
I thought my case statement was outside the loop?

The loop is everything between do and done. That's where you are asking.
# 5  
Old 10-13-2008
Ok so I changed it but after it asks me it only moved one file?
Should I not be using a case statement to perform the move?
I am using it to ask the user if the list is correct.

I thought that inside the case statement I should put what shoudl be carried out if the user says no.
Sounds like maybe I shouldn't be using case or put that somewhere else in the script?

I've very new so please bear with me. Thank you!

Last edited by llsmr777; 10-13-2008 at 04:36 PM..
# 6  
Old 10-13-2008
Quote:
Originally Posted by llsmr777
Ok so I changed it but after it asks me it only moved one file?

What did you change it to?
Quote:
Should I not be using a case statement to perform the move?

A case statement cannot move anything. You use mv to do the move.
Quote:
I am using it to ask the user if the list is correct.

How are you using it? We're not mind readers.
Quote:
I thought that inside the case statement I should put what shoudl be carried out if the user says no.

...and what should be carried out when the use says yes.
Quote:
Sounds like maybe I shouldn't be using case

Yes, you should use case.
Quote:
or put that somewhere else in the script?

Isn't that what I suggested?
# 7  
Old 10-13-2008
Oh I'm sorry. I'm obviously clueless I know that!

here is my code

Code:
for i in `ls -1 | grep $1 | grep  $2`
do
x=`echo $i | sed 's/\.Sent/\.Done/g'`
echo mv $i DONE/$x
done
echo "Is this OK?"
read user_response

case $user_response in

"y"|"Y")
        mv $i DONE/$x
        echo moved $i to DONE/$x;;
*)
        echo "No changes made ...";;

esac


Code:
for i in `ls -1 | grep $1 | grep  $2`
do
x=`echo $i | sed 's/\.Sent/\.Done/g'`
echo mv $i DONE/$x
done

Here i am compliing my list that I want to rename from .Sent to .Done
And then outputing it to the screen

Code:
echo "Is this OK?"
read user_response

Here I ask if what outputed was what the user wants to move


Code:
case $user_response in

"y"|"Y")

        for i in `ls -1 | grep $1 | grep  $2`
        do
        x=`echo $i | sed 's/\.Sent/\.Done/g'`
        mv $i DONE/$x;;
*)
        echo "No changes made ...";;

esac

Here I want the files to be moved from .Sent to .Done and then if the user says Y
and to print to screen "No changes made" if the user says no

When I run the script it lists all the files
then asks me if it's ok
when I hit Y
And I do a listing only 1 of the files listed were moved not all.

Thanks again.

Last edited by llsmr777; 10-13-2008 at 05:47 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. IP Networking

Discussion at work, would a router work pluging a cable in wan1 and lan1?

hi all. and sorry for the random question, but this sparkled a raging flame-war at work and i want more points of view situation a router, with linux of some sort, dhcp client requesting for ip in wan1 (as usual with wan ports) dhcp server listening in lan1, and assigning ip (as usual... (9 Replies)
Discussion started by: broli
9 Replies

2. Shell Programming and Scripting

My script work on Linux but not work in sunos.

My script work on Linux but not work in sun os. my script. logFiles="sentLog1.log sentLog2.log" intial_time="0 0" logLocation="/usr/local/tomcat/logs/" sleepTime=600 failMessage=":: $(tput bold)Log not update$(tput rmso) = " successMessage="OK" arr=($logFiles)... (7 Replies)
Discussion started by: ooilinlove
7 Replies

3. UNIX for Dummies Questions & Answers

this cshell script does not work ??

Hi I am trying to put the following commands that i have to type manually at the cshell prompt into a cshell script startup.csh which is copied below echo $DISPLAY xhost + rsh ba08lo01 module load incisiv/102/10.20.035 setenv DISPLAY $DISPLAY When i run the script with source command... (2 Replies)
Discussion started by: kaaliakahn
2 Replies

4. Shell Programming and Scripting

my script doesn't work :(

i have this script and when i ejecute it, the console tell me this " sintax error line 41 unexpected element "}" " is the sintaxis ok? #!/bin/bash if ;then { exit 0; } if ; then { sudo /etc/init.d/apache2 start; sudo /etc/init.d/mysql start; php5 & nautilus... (3 Replies)
Discussion started by: keiserx
3 Replies

5. UNIX for Dummies Questions & Answers

Script syntax...does this work?

Hi all, I'm just a basic unix scripto...does the following lines work?? I saw this lines from a script I was about to modify, please take note that these are not the original directories and the sign ( " ) is in there. "/destination/directory" "/origin/directory" If I add a command line in... (3 Replies)
Discussion started by: 3rr0r_3rr0r
3 Replies

6. Shell Programming and Scripting

Modify Perl script to work with txt - Permissions script

Hi I have this code, and i want work with a ls -shalR output in .txt What i need read to do this?? Where start? #!/usr/bin/perl # Allrights- A perl tool for making backups of file permissions # Copyright (C) 2005 Norbert Klein <norbert@acodedb.com> # This program is free... (1 Reply)
Discussion started by: joangopan
1 Replies

7. Shell Programming and Scripting

My script does not work - could you pls help?

Hi all, I put together a script that seems not working as I would like to and after spending hours to find the problem I decided to ask your help. The thing I am trying to do is call AWK command on the TRUE branch of if statement. Else branch should only print out a message to screen. This... (1 Reply)
Discussion started by: BearCheese
1 Replies

8. Shell Programming and Scripting

Why does this script not work? Please help

I have created a Shell script to call 12 Oracle PL/SQL scripts to query some data and insert into a table. When I run shell scripts manually, it works very well. But when I schedule shell script in crontab, it will give the error message like this: 02/22/07 04:00:00: Database mydb.world is up... (4 Replies)
Discussion started by: duke0001
4 Replies

9. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies

10. UNIX for Dummies Questions & Answers

Command work but not in SH script

Command works but not in SH At terminal if i type: scp test.tar.gz user1@server2:/home/user Everything run smoothly (keyed, no password need) At script , test.sh #!/bin/sh scp test.tar.gz user1@server2:/home/user Nothing happen and clue ? ? ? ? ? (3 Replies)
Discussion started by: cititester
3 Replies
Login or Register to Ask a Question