【问题标题】:simple script to remove files in linux bash [duplicate]在linux bash中删除文件的简单脚本[重复]
【发布时间】:2019-09-02 12:21:18
【问题描述】:

我在 linux bash 中做了一个简单的脚本,如下所示:

#!/bin/bash

PATH=/tmp_with_zip_files
FILETYPE=zip
i=1

for filename in $PATH/*.$FILETYPE;
do
        echo "rm $filename";

        if [ -f $filename ];
                then rm $filename;
        fi

        i=$((i+1))
done

echo "$i files removed"

但是,当我运行脚本时出现错误,因为脚本无法正常工作。这意味着从控制台我有一条消息:

zip_delete.sh: line 11: rm: command not found

为什么 linux bash 脚本无法识别 linux 命令 rm?

【问题讨论】:

标签: linux bash path


【解决方案1】:

大声笑,我认为这是因为您正在覆盖默认的$PATH 变量(该变量告诉 bash 在哪里查找可执行文件)。在执行过程中,在PATH中找不到rm程序,因为它只指向/tmp_with_zip_files

为您的目的使用不同的变量名称,例如chicken_nuggets。

警告不要做以下 LMAO PATH=$PATH:/tmp_with_zip_files 你可以从 PATH 中删除一堆东西,那会很糟糕

【讨论】:

  • 明白了。我看到了您对另一个答案的评论,并将其更改为更合适的变量名。谢谢
【解决方案2】:

PATH 变量保存操作系统命令的路径(如 rm),不要将其用作变量,将其命名为其他名称,如 path_to_files。

【讨论】:

  • 更喜欢path。 POSIX 标准保留全大写变量供操作系统使用。参见pubs.opengroup.org/onlinepubs/9699919799/basedefs/…,第四段:包含小写字母的环境变量名称空间是为应用程序保留的。应用程序可以使用此名称空间中的名称定义任何环境变量,而无需修改标准实用程序的行为。
  • @Charles Duffy - 已更正
猜你喜欢
  • 2015-05-27
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2020-04-02
  • 2018-06-16
  • 2021-01-17
  • 2018-11-27
相关资源
最近更新 更多