2013-04-03 32 views
0

我正在編寫一個bash腳本以從備份目的中獲取目錄中的最新文件。下面是該腳本:返回「未找到」錯誤的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 

我行進行了測試這被註釋掉了,沒有把它作爲一個變量,而且沒有拋出錯誤,所以它應該工作。

回答

3

=後刪除空格:

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

隨着空間,線被解釋爲無分配給$tar_file和運行被作爲$(...)的輸出所獲得的命令。該命令未找到。

+0

哇這樣一個簡單的錯誤,感謝解釋發生了什麼! – boundless08

2

是否正確有

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

,而不是

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

(介意空間)

+0

謝謝大家,我會將choroba的答案標記爲正確,因爲他解釋了空間對代碼的作用,儘管如此,謝謝! – boundless08