题目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...会更加通俗易懂
评论区