0

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

#!/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 识别为命令。有任何想法吗?

4

3 回答 3

3

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

files=foo

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

files=$(ls)

或者

files=$(ls /path/to/some/dir)
于 2013-09-29T22:00:04.017 回答
0

我看到两个错误:

  1. 当你初始化变量“文件”时,你不应该在它前面加上“$”符号
  2. 命令 ls 应放在反引号 (`) 中:

这是一个简短的例子:

#!/bin/bash

files=`ls`

for file in $files
do
    echo "file: $file"
done
于 2013-09-29T22:04:07.563 回答
0

您应该尝试将 ls 放入 ` 标记 - 更好的是,反引号。像这样:

files=`ls`

这里有一点背景。查看页面以获取有关 shell 环境中引号的更多信息:

反引号不用于引用字符。该字符用于命令替换,其中它们之间的字符由 shell 执行并将结果插入该行。

例子:

echo the date is `date`
于 2013-09-29T22:00:03.693 回答