bash备份脚本错误

时间:2013-09-29 21:54:06

标签: bash backup

所以我正在编写一个简单的备份脚本,在调用时会将特定文件或当前目录中的所有文件备份到我的备份目录中。 这是我的剧本

#!/bin/bash

#verify if $1 is empty, if so, copy all content to backup directory

if [ -z "$1" ]
then

    $files=ls
    #Looping through files
    for file in $files
    do
        cp $file ../backup/
    done      
 #else copy files specified 

else

$files=ls $1

    #Looping through files 
    for file in $files
    do
        cp $file ../backup/
    done
fi

我唯一得到的错误是:

  

./ backup:第7行:= ls:未找到命令

我不确定为什么脚本不会将ls识别为命令。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

要分配变量,您不需要美元符号:

files=foo

要将命令输出保存到var,您需要执行以下操作:

files=$(ls)

files=$(ls /path/to/some/dir)

答案 1 :(得分:0)

你应该尝试将ls放入`标记 - 更好,后面引用。像这样:

files=`ls`

这里有一点背景知识。查看this页面,了解有关shell环境中引号的更多信息:

  

后引号不用于引用字符。那个角色是   用于命令替换,它们之间的字符是   由shell执行,结果插入该行。

示例:

echo the date is `date`

答案 2 :(得分:0)

我看到两个错误:

  1. 初始化变量“文件”时,不应在其前面添加“$”符号
  2. 命令ls应放在后引号(`)中:
  3. 这是一个简短的例子:

    #!/bin/bash
    
    files=`ls`
    
    for file in $files
    do
        echo "file: $file"
    done