Skip to content
On this page

脚本排错

删除文件/文件夹

shell
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *

WARNING

如果目录$dir_name不存在,cd $dir_name命令就会执行失败。这时,就不会改变当前目录,脚本会继续执行下去,导致rm *命令删光当前目录的文件❌

另一种错误

shell
#! /bin/bash
cd $dir_name && rm *
#! /bin/bash
cd $dir_name && rm *

WARNING

上面脚本中,只有cd $dir_name执行成功,才会执行rm *

但是,如果变量$dir_name为空,cd就会进入用户主目录,从而删光用户主目录的文件❌

正确写法

shell
#! /bin/bash

`[[ -d $dir_name ]] && cd $dir_name && rm *` # 先判断是否存在
#! /bin/bash

`[[ -d $dir_name ]] && cd $dir_name && rm *` # 先判断是否存在

删除文件/文件夹

shell
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *

WARNING

如果目录$dir_name不存在,cd $dir_name命令就会执行失败。这时,就不会改变当前目录,脚本会继续执行下去,导致rm *命令删光当前目录的文件

删除文件/文件夹

shell
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *

WARNING

如果目录$dir_name不存在,cd $dir_name命令就会执行失败。这时,就不会改变当前目录,脚本会继续执行下去,导致rm *命令删光当前目录的文件

删除文件/文件夹

shell
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *
#! /bin/bash

dir_name=/path/not/exist
cd $dir_name
rm *

WARNING

如果目录$dir_name不存在,cd $dir_name命令就会执行失败。这时,就不会改变当前目录,脚本会继续执行下去,导致rm *命令删光当前目录的文件