0

バックアップ目的でディレクトリから最新のファイルを取得する 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

コメントアウトされた行でテストしましたが、変数として配置するのではなく、エラーをスローせずに機能するため、機能するはずです。

4

2 に答える 2

3

の後のスペースを削除します=

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

スペースがあると、行は に何も割り当てず$tar_file、 の出力として取得されるコマンドを実行していると解釈され$(...)ます。そのコマンドが見つかりません。

于 2013-04-03T11:14:14.897 に答える
2

持つのが正しいか

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

そしてそうではない

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

?

(スペースに注意してください)

于 2013-04-03T11:14:49.423 に答える