日期:2017/10/7
不知不觉,国庆黄金周已经过去7/8了,今天写了一个shell脚本,一边是温习shell的基础语法,也好在之后的工作中掌握一门技能;
上代码:
#!/bin/bash
#!This is a shell script to finish the folders tasks.
rm -rf /home/gec/mmb/1
mkdir /home/gec/mmb/1
cd /home/gec/mmb/1
echo 'The current path is :';pwd
echo '********'
for i in 1 2 3 4 5 6 7 8 9 10
do
#ls
echo '++'
let result=i%2
if [ $result -eq 0 ]
then
mkdir $i
#echo "mkdir $i finished"
cd $i
#echo "cd $i finished"
a=1000
while [ $a -gt 0 ]
do
echo '--'
#echo $a
mkdir $a
let a--
#a = $a-1
done
echo '1000 filefolders created successfully'
cd .. #exit
#echo "exit $i finished"
else
mkdir $i
#echo "mkdir finished"
fi
done
cd ..
ls -lR|grep "^d"|wc -l
嗯,是的,把上面的代码撸一遍,对于基础的要点便掌握了;
上面涉及的基础指令有:
1. rm -rf :rm 是删除文件的指令,那为啥我使用它去删除文件夹呢??
那是因为rmdir指令只能删除空目录,所以在上面我加入了 参数 rf,强制性向下进入目录,删除其中的文件,然后再删除目录本身;
2. mkdir:新建文件夹,若是加入的目录参数不存在,则新建路径的文件夹;
3. cd:进入文件夹,后跟绝对/相对路径;相反,cd .. 是返回上一级文件目录;
4. echo:输出字符串/数值;
5. for循环:务必注意它跟其他高级语言(C/Java/Python)的结构化区别,do....done 包含了循环体,可以参考博文:http://www.linuxidc.com/Linux/2012-02/53030.htm;
6. let:执行数学运算,可以参考博文:http://blog.csdn.net/changerjjlee/article/details/52161191;
7. if:比较差异,if....then....else....,可以参考博文:http://blog.csdn.net/crazyhacking/article/details/10182563;
8. while:另一种循环,do....done 包含了循环体,可以参考博文:http://www.cnblogs.com/kangyoung/p/3556186.html;
最后再详细讲解几个:
1. 最后的:ls -lR|grep "^d"|wc -l ,是对目录数量进行的一个计数:
2. 对于虚拟机来说,默认的shell可能不是bash,而是dash,因此会碰上let:not found command的报错,可以切换默认为bash执行,或者bash + xxx.sh;
切换默认的shell,可以参考博文:http://blog.csdn.net/hemmingway/article/details/49301873;
END.