侧边栏壁纸
博主头像
伯淳的个人博客博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

鸟哥的linux私房菜课后习题-第十二章

Administrator
2023-10-17 / 0 评论 / 1 点赞 / 50 阅读 / 1832 字

题目4:

编写一个程序,它的作用是:(1)先查看一下/root/test/logical这个名称是否存在;(2)若不存在,则创建一个文件,使用touch来创建,创建完成后退出;(3)如果存在的话,判断该名称是否为文件,若为文件则将之删除后新建一个目录,目录名为logical,之后离开;(4)如果存在的话,而且该名称为目录,则删除此目录。

我的代码:

#!/bin/bash
#Program:
#   /root/test/logical exist?
#   (1)no exist. =>build a new file
#   (2)exist. =>is a file?
#       (2.1)yes. => delete and build directory 'logical'
#       (2.2)no. => is a directory? => yes, delete the directory.
#History:
#2023/10/16    BCB000  First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
grep 'logical' /root/test
check=$?
if [ "${check}" == "1" ]; then
    touch /root/test/logical
    exit
else
    [ -f /root/test/logical ] && rm /root/test/logical && mkdir /root/test/logical && exit
    [ -d /root/test/logical ] && rm -r /root/test/logical
fi

AI的代码:

#!/bin/bash

# 设置PATH变量,包含需要的路径

PATH=$PATH:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/bin

export PATH

# 在/root/test文件中查找字符串"logical"

grep 'logical' /root/test

# 判断grep命令的退出状态

if [ $? -eq 1 ]; then

    # 如果"logical"没有在文件中找到,则创建一个同名的空文件

    touch /root/test/logical

else

    # 如果找到了"logical"字符串,检查/root/test/logical是文件还是目录,并进行相应的操作

    if [ -f /root/test/logical ]; then

        rm /root/test/logical

        mkdir /root/test/logical

    elif [ -d /root/test/logical ]; then

        rm -r /root/test/logical

    fi

fi

# 无论何种情况,执行完上述逻辑后退出脚本

exit

小结:对比之下,我自己所写的脚本可读性不高,也存在一些问题

改善点1:check=$? [ "${check}" == "1" ]用[ $? -eq 1 ]更简洁

改善点2:...&&...&&...==>用if...then...会更加通俗易懂

1

评论区