【问题标题】:Bash script returning "Not found" errorBash 脚本返回“未找到”错误
【发布时间】:2013-04-03 11:09:56
【问题描述】:

我正在编写一个 bash 脚本以从目录中获取最新文件以进行备份。这是脚本:

#!/bin/sh

set -u
set -e

backup_dir=/media/backup

cd $backup_dir

tar_file= $(ls -Art | tail -n 1)

#ls -Art | tail -n 1

echo $tar_file

当我运行脚本时,它会得到正确的文件,但也会返回一个未找到的错误,我不知道为什么:

./backup: 10: 20130403-120001.tar.gz: not found

我用被注释掉的那行测试了它,而不是把它作为一个变量,它可以正常工作而不会引发错误,所以它应该可以工作。

【问题讨论】:

    标签: bash


    【解决方案1】:

    去掉=后面的空格:

    tar_file=$(ls -Art | tail -n 1)
    

    使用空格,该行被解释为没有为$tar_file 分配任何内容,并运行作为$(...) 的输出获得的命令。找不到该命令。

    【讨论】:

    • 哇,这么简单的错误,感谢您对发生的事情的解释!
    【解决方案2】:

    这样做对吗

    tar_file= $(ls -Art | tail -n 1)
    

    而不是

    tar_file=$(ls -Art | tail -n 1)
    

    ?

    (注意空间)

    【讨论】:

    • 谢谢,我将 choroba 的答案标记为正确,因为他解释了空格对代码的作用,不过还是谢谢!
    猜你喜欢
    • 2021-03-24
    • 2017-02-07
    • 2011-05-13
    • 2011-04-09
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多