It would help to see at least the first few lines of your input .txt file. I'm guessing that it contains more than just the user name on each line. If that is the case then each space separated token on each record will be assigned to line and the loop executed. If your file contains three tokens per line (lets say a, b, and c for line 1), then the first time through the loop the deststr variable is assigned something like this:
and that might not be a legitimate filename.
There are several ways that you can test for this, with the easiest being to echo the contents of deststr rather than executing the mv command. This would validate the contents of deststr and give you a better idea of what is going on.
If your input file does contain multiple columns of data, the following could be used to extract the proper column (column 3 in my example) and then do the right thing.
If your input list contains only the dbuser name, then I suggest running your script with a 'set -x' at the top and looking at the tracing output for clues as to what is going on.
No, there is only one column of manually entered names. It is a simple text file and although it was about 250 lines long with legitimate subdomain names, I have manually reduced it to two for testing.
If I actually copy the screen output of the command that is echoed and repaste it as a single line, it works as well.
For example, it will display on the screen:
If I manually copy everything before the colon and paste it to a new line it works fine.
Here is an actual screen copy of me doing that, I have just changed the names for security.
As you can see, I copied the last line before the : (ctrl C) and repasted (mouse right click) it into the same ssh window and it worked without a hitch. (Yes the file copy worked, I checked.)
Other than me changing the subdomain and domain name here in this post, this is a ctrl C of the ssh screen and a ctrl V to here.
I really am baffled by this. The only things that I can come up with are;
1. My bash is broken.
2. The cat function is pulling in an invisible character that is screwing it up.
---------- Post updated at 02:27 PM ---------- Previous update was at 02:05 PM ----------
You have set IFS to only split on a newline. After $movestr is expanded, there will not be any field splitting on the spaces within the string; it's just one long word to the shell.
You have set IFS to only split on a newline. After $movestr is expanded, there will not be any field splitting on the spaces within the string; it's just one long word to the shell.
Regards,
Alister
If I understand you correctly, you are saying that if the first line contains "word1 word2" etc that it is what is causing the problem.
My text file has ONE word per line.
My entire test file (nlist.txt) has two words in total, one on each line.
Also, if I copied and pasted what has failed if this were the case, why would it work?
If you feel that it is the case, how would I rectify this?
The value of the IFS variable determines which characters are used to split the result of variable expansion. $movestr expands to the string "cp -R -p ...." and you have modified IFS so that it only splits that string on newlines. For that command to work properly, you need the shell to split on spaces as well .. perhaps tabs. In short, using the default value of IFS. Alternatively, you could use eval. The best solution, in this case, however, is to not use a for loop; use a while read loop and don't mess with IFS (at least not until you've had a chance to study its effects further).
You can confirm that this is the problem by storing the old value of IFS and restoring it before the line: $movestr
I am trying to run a script to make a simple modification to a number of similar files. The sed works, but after it runs and the differences are displayed, the script does not read ans to start a renaming script if the user answered Y or y.for i in "$@"
do
sed -f myfile.sed $i >$i.new
diff... (2 Replies)
hi,
i am trying to run this script.the name of script is final.sh
after i run it:
#./final.sh &
i grep the command
# ps -a | grep bash
and i see more then one processes runing 3!!
Please use code tags
how can i solve this problem?
my target script must always run in... (8 Replies)
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)
Hi all,
I need some help. my shell script doesn't work especially in the loop.
#!/bin/sh -xv
export ORA_ADMIN=/oracle/home/admin
export ORACLE_SID=ORA_SID
cat ${ORA_ADMIN}/param_alert_log.ora | while read MSG
do
#echo $MSG
#echo "tail -400... (8 Replies)
Hello,,
Im verry new to scripting and have some problems with this script i made..
What it does:
It checks a directory for a new directory and then issues a couple of commands.
checks sfv - not doing right now
checks rar - it checks if theres a rar file and when there is it skips to... (1 Reply)
I have a script which uses below for loop:
for (( i = 0 ; i <= 5; i++ ))
do
echo "Welcome $i times"
done
But when I run the script, it gives error message:
Syntex Error : Bad for loop variable
Can anyone guide to run it?
Thanks in advance. (10 Replies)
Hi there. I'm new to scripting in bash shell and I have this problem.
I'm trying to make a script that returns the greatest common divisor of two integer numbers according to Euclid's algorithm...
Here is, what I've done:
#!/bin/bash
m=$1
n=$2
while
do
if ; #line 8
then m=$m-$n... (1 Reply)
Hi everybody:
I usually use Mandriva distro (in my laptop), and I have made some scripts. These scripts work correctly but now, in other computer which is installed Ubuntu don't work, and I have this error message:
The script is:
.....
echo "Your option is:"
echo
read option
case... (1 Reply)
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)
I have written a script to run on UNIX server. When I tested, it always hanged on after "date +"%D %T: XXXXXX script started." part. Then it wouldn't go further. UNIX server gave me one error message. I used the same code in another script. It works fine. I think the major problem may be in... (3 Replies)