2013-09-29 157 views
0

因此,我正在編寫一個簡單的備份腳本,在被調用時會將特定文件或當前目錄中的所有文件備份到備份目錄中。 這是我的腳本bash備份腳本錯誤

#!/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識別爲命令。有任何想法嗎?

回答

0

您應該嘗試將ls放入`marks - 更好,後面的引用。像這樣:

files=`ls` 

這裏有一點背景。檢查this頁有關引號在shell環境的更多信息:

背面報價不用於引號字符。該字符是用於命令替換的 ,其中它們之間的字符是由shell執行的 ,並將結果插入到該行中。

例子:

echo the date is `date` 
3

分配一個變量,你不需要美元符號:

files=foo 

一個命令的輸出保存到一個變種,你需要做的:

files=$(ls) 

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

我看到了兩個錯誤:

  1. 當初始化變量「文件」你不應該用「$」符號
  2. 命令ls應放在反引號(')加前綴:

這是一個簡短的例子:

#!/bin/bash 

files=`ls` 

for file in $files 
do 
    echo "file: $file" 
done