Fuzzy Analysis
Fuzzy Analysis

Reputation: 3188

How to write a shell (.sh) script for the following

I'm new to linux/unix shell scripting, and I have a few dozen projects that I want to set up Subversion folders for (eventually I'll get to Git lol). How do I write a script to do the following:

  1. Get a list of all sub-folders in a folder
  2. For each sub-folder, use it execute the following commands:
svnadmin create /var/www/svn/<sub-folder>

svn import /var/www/<sub-folder> file:///var/www/svn/<sub-folder>

chmod -R 777 var/www/svn/<sub-folder>

chown -R apache.apache var/www/svn/<sub-folder>

From what I've seen on the internet so far, I suppose I put it all into a .sh file and type something like :

.sh thing.sh 

... to execute it.

Any help appreciated.

Upvotes: 0

Views: 168

Answers (3)

Harry
Harry

Reputation: 1472

You could create a script doIt.sh with the following:

#!/bin/bash
svnadmin create /var/www/svn/$1
svn import /var/www/$1 file:///var/www/svn/$1
chmod -R 777 var/www/svn/$1
chown -R apache.apache var/www/svn/$1

Then you can go into the folder in which you want to find all subfolders and execute the following:

find . -type d | xargs -I {} ./doIt.sh {}

Also, are you sure of this line:

svn import /var/www/<sub-folder> file:///var/www/svn/<sub-folder>

Did you not mean:

svn import /var/www/svn/<sub-folder> file:///var/www/svn/<sub-folder>

Note: Missing svn subfolder in path

Upvotes: 1

Dropout
Dropout

Reputation: 13866

Does this work for you?

#!/bin/bash
for FILE in `ls`
do
    if test -d $FILE
    then      
        svnadmin create /var/www/svn/$FILE
        svn import /var/www/$FILE file:///var/www/svn/$FILE
        chmod -R 777 /var/www/svn/$FILE
        chown -R apache.apache /var/www/svn/$FILE
    fi
done

After saving execute chmod +x {name of file} on the script to make it executable with ./{name of file} or sh {name of file}.

In case you need all subfolders recursively from current folder:

#!/bin/bash
for FILE in `find . -type d`
do
    if test -d $FILE
    then      
        svnadmin create /var/www/svn/$FILE
        svn import /var/www/$FILE file:///var/www/svn/$FILE
        chmod -R 777 /var/www/svn/$FILE
        chown -R apache.apache /var/www/svn/$FILE
    fi
done

If you have any questions please comment.

Upvotes: 1

keltar
keltar

Reputation: 18409

for i in `find -maxdepth 1 -type d`; do
  svnadmin create "/var/www/svn/$i"
  svn import "/var/www/$i" "file:///var/www/svn/$i"
  chmod -R 777 "var/www/svn/$i"
  chown -R apache.apache "var/www/svn/$i"
done

Of course your svn import command is incorrect, and pathes in your chmod and chown missing /. But it's copypaste of your commands, anyway.

Upvotes: 2

Related Questions