Linux 如何为以下内容编写shell(.sh)脚本
我是linux/unix shell脚本新手,我有几十个项目要为其设置Subversion文件夹(最终我会使用Git lol)。如何编写脚本来执行以下操作:Linux 如何为以下内容编写shell(.sh)脚本,linux,shell,unix,Linux,Shell,Unix,我是linux/unix shell脚本新手,我有几十个项目要为其设置Subversion文件夹(最终我会使用Git lol)。如何编写脚本来执行以下操作: #!/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 find . -type d
#!/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
find . -type d | xargs -I {} ./doIt.sh {}
感谢您的帮助。这对您有用吗
#!/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
保存后,在脚本上执行chmod+x{name of file}
,使其可执行/{name of file}
或sh{name of file}
如果您递归地需要当前文件夹中的所有子文件夹:
#!/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
如果您有任何问题,请发表意见。这对您有用吗
#!/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
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
保存后,在脚本上执行chmod+x{name of file}
,使其可执行/{name of file}
或sh{name of file}
如果您递归地需要当前文件夹中的所有子文件夹:
#!/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
如果您有任何问题,请评论
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
当然,您的svn import
命令不正确,并且chmod
和chown
中的路径缺少/
。但无论如何,这是你命令的复制粘贴
当然,您的
svn import
命令不正确,并且chmod
和chown
中的路径缺少/
。但无论如何,这是命令的复制粘贴。您可以使用以下内容创建一个脚本doIt.sh:
#!/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
find . -type d | xargs -I {} ./doIt.sh {}
然后,您可以进入要在其中查找所有子文件夹的文件夹并执行以下操作:
#!/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
find . -type d | xargs -I {} ./doIt.sh {}
另外,您确定这一行吗:
svn import /var/www/<sub-folder> file:///var/www/svn/<sub-folder>
svn导入/var/www/file:///var/www/svn/
你不是说:
svn import /var/www/svn/<sub-folder> file:///var/www/svn/<sub-folder>
svn导入/var/www/svn/file:///var/www/svn/
注意:路径中缺少svn子文件夹您可以使用以下内容创建脚本doIt.sh:
#!/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
find . -type d | xargs -I {} ./doIt.sh {}
然后,您可以进入要在其中查找所有子文件夹的文件夹并执行以下操作:
#!/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
find . -type d | xargs -I {} ./doIt.sh {}
另外,您确定这一行吗:
svn import /var/www/<sub-folder> file:///var/www/svn/<sub-folder>
svn导入/var/www/file:///var/www/svn/
你不是说:
svn import /var/www/svn/<sub-folder> file:///var/www/svn/<sub-folder>
svn导入/var/www/svn/file:///var/www/svn/
注意:路径中缺少svn子文件夹我认为它不会在您从中运行的目录下查找子目录。否,它将只获取当前文件夹中的文件夹。如果您递归地需要它,则必须使用
find
。你没有提到递归。我将在中编辑它。-l
标志必须删除,否则您将遍历大量垃圾,而不仅仅是文件名。在svn的情况下,递归迭代没有意义,因为它从指定路径递归导入。这个评论实际上是误导性的,而且它不是由OP.@Dropout-er发表的。。。我的意思是,为什么不带参数的ls
呢?我想它不会在运行from的目录下查找子目录。否,它只会获取当前文件夹中的文件夹。如果您递归地需要它,则必须使用find
。你没有提到递归。我将在中编辑它。-l
标志必须删除,否则您将遍历大量垃圾,而不仅仅是文件名。在svn的情况下,递归迭代没有意义,因为它从指定路径递归导入。这个评论实际上是误导性的,而且它不是由OP.@Dropout-er发表的。。。我的意思是,为什么不使用无参数的ls
?如果它需要应用于所有子目录(根据问题陈述),那么我认为我们不必为findThanks keltar设置“-maxdepth 1”条件,以便进行脚本、路径和语法更正。对于单深度子目录,您也是正确的(我的错误在于没有提前指定,对不起,各位)。请编辑chmod和chown。。您在路径的开头缺少了a/它是故意从问题中复制的,我明确指出它很可能是不正确的。问题是关于目录的迭代,答案也是——从我的角度看,我说不出来,也许这就是运行这些命令的全部想法。如果它需要应用于所有子目录(根据问题陈述),那么我认为我们不必在findThanks keltar中设置“-maxdepth 1”条件,用于脚本以及路径和语法更正。对于单深度子目录,您也是正确的(我的错误在于没有提前指定,对不起,各位)。请编辑chmod和chown。。您在路径的开头缺少了a/它是故意从问题中复制的,我明确指出它很可能是不正确的。问题是关于目录的迭代,答案也是一样——从我的角度看,我说不上来,也许这就是运行这些命令的全部想法。