bash备份脚本错误

bash备份脚本错误,bash,backup,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 $fi

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

#!/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
我得到的唯一错误是:

/备份:第7行:=未找到ls:命令


我不知道为什么脚本不能将ls识别为命令。有什么想法吗?

你应该试着把ls写进“标记”中——最好是后面的引号。像这样:

files=`ls`
这里有一点背景。有关shell环境中引号的详细信息,请参见第页:

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

例如:

echo the date is `date`

你应该试着把ls放在后面的引号里。像这样:

files=`ls`
这里有一点背景。有关shell环境中引号的详细信息,请参见第页:

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

例如:

echo the date is `date`

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

files=foo
要将命令的输出保存到变量,需要执行以下操作:

files=$(ls)


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

files=foo
要将命令的输出保存到变量,需要执行以下操作:

files=$(ls)

我看到两个错误:

  • 初始化变量“files”时,不应在其前面加“$”符号
  • 命令ls应放在反引号(`)中:
  • 这是一个简短的例子:

    #!/bin/bash
    
    files=`ls`
    
    for file in $files
    do
        echo "file: $file"
    done
    
    我看到两个错误:

  • 初始化变量“files”时,不应在其前面加“$”符号
  • 命令ls应放在反引号(`)中:
  • 这是一个简短的例子:

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