开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
在研究批量修改内容的过程中.遇到的很多奇奇怪怪的问题.在问题的诱惑下.导致对批量操作甚是喜欢.记录一下学习成果.
您能在这里开到啥
- 批量创建
批量创建
在准备批量修改内容的测试用例的时候.我就深有感触,因为我是纯纯的手动创建.也完全的忽略了.对啊,我这不是学习的就是脚本吗?.竟然还手动创建.真是不该啊.下面我就记录一下.自己是怎么用脚本来批量创建的.如有更好的思路,请不吝赐教.
实现步骤:
- 创建
a、b、c、d四个文件夹.- 并在每一个文件夹里创建对应的
txt文件.- 在
txt文件里写入测试数据.
最终效果:
当然上面的效果图还是我手动创建.经过上面的分析.这样就可以对症下药.一直以来,都没有使用函数,今天咱就试一试.
-
创建父类文件夹
- 判断父类文件夹是否存在
- 父类文件夹存在,即执行创建子文件.
- 父类文件夹不存在.创建父类文件夹.执行第2步.
# 创建父文件夹 createSupDir() { if [ ! -d "$ydir" ]; then mkdir -p "$ydir" && cd "$ydir" || exit createSubDirS else cd "$ydir" || exit createSubDirS fi } -
创建子类文件夹
-
利用for in循环机制.进行文件夹创建.由于我第一次失误,没有进行每次循环的结束事件.导致创建文件夹结果如下所示.
当我看到创建的文件结果后,一脸懵逼.什么情况.这是递归创建到底了啊.下面是我第一次的代码.如下所示
# 创建子文件夹 createSubDirS() { for var in a b c d; do if [ ! -d "$var" ]; then mkdir -p "$var" && cd "$var" || exit createText $var else echo "$var文件夹已存在" cd "$var" || exit createText $var fi done }经过我仔细排查,总算找到问题了.关键的问题就是
cd "$var",为了创建对应文件夹里面的文件.我这边就执行了cd到文件夹的操作,坏就坏在了这里,只知道进去,却忘记回退了,哎.也是粗心导致的.下面是我的解决方法# 创建子文件夹 createSubDirS() { for var in a b c d; do if [ ! -d "$var" ]; then mkdir -p "$var" createText $var else echo "$var文件夹已存在" createText $var fi done } # 创建文件 createText() { cd "$1" || exit ···· cd .. }经过上面的修改后,总算完成了第三步.如下所示
哈哈,也算是完成了效果.
-
-
创建文件
创建文件就相对简单了,一波操作,也是顺顺利利.我就直接上代码了
# 创建文件 createText() { # 执行进入文件夹操作 cd "$1" || exit file="$1"_text.txt if [ ! -f "$file" ]; then # 创建文件 touch "$file" # 写入文件 writeText "$file" else echo "$file文件已存在" writeText "$file" fi # 执行回退操作 cd .. } -
写入数据
说实话,确实不太清楚怎么写入文件,查找资料后.这里也做一下记录.
-
单行写入
覆盖写入:
echo 内容 > 文件事例: `echo shell > test.txt` shell末尾写入:
echo 内容 >> 文件事例: echo shell >> test.txt 结果 shell shell -
多行写入
格式如下
cat <<EOF > filename 内容 EOF通过第一个,我们知道
>和>>的区别.用法是一样的.cat <<EOF> test.txt 我是测试 我是测试 我是测试 我是测试 EOF 这个结果是永远是输入的内容 cat <<EOF >> test.txt 我是测试 我是测试 我是测试 我是测试 EOF 这个结果就是一直往后面添加内容.
经过上面的学习,我们来完成写入功能吧,
# 写入信息 writeText() { # 把内容写入到文件里,并写在内容后面.文件原内容会保留下来 echo "$1我是测试数据" >>"$1" } -
经过上面的4步,我们终于可以完成了我们的需求了.直接调用第一步createSupDir方法.我们就看一下执行结果吧.
当然,由于我们每个文件的都判断了文件是否存在,所以不会出现重复创建.到此,今天的笔记完成了.
系列文章
- shell 通用命令之find
- shell 通用命令之ls
- shell 通用命令之文件权限
- shell 通用命令之流程控制(一)
- shell 通用命令之流程控制(二)
- shell 通用命令之字符串操作
- shell之批量修改内容