2017-09-25 24 views
-1
の予期せぬ終了
#!/bin/bash 
source_dir="~/p6_tmp" 
target_dir="~/trash" 
if [ ! -d ${target_dir} ]; 
then 
mkdir target_dir 
else 
echo "Displaying the contents of current directory" 
for entry in "$source_dir"/* 
do 
    echo "$entry" 
echo "Please enter the filename you wish to trash:" 
read filename 
if [ -f ${source_dir}/${filename} ] 
then 
    if [ -f ${target_dir}/${filename} ] 
    then 
     mv "${source_dir}/${filename}" "${target_dir}/${filename}_bak" 
    else 
     mv "${source_dir}/${filename}" "$target_dir" 
    fi 
else 
    echo "The file ${source_dir}/${filename} does not exist" 
fi 

質問です: Bourneシェル/ binが使用/ shの次の仕様を満たすゴミと呼ばれるユーティリティ書く:行26:構文エラー:ファイル

使用方法:ゴミ-lを| -p | {filename} *

ゴミ箱はrmユーティリティの代わりです。ファイルを削除するのではなく、ゴミ箱をホームディレクトリの.trashというサブディレクトリに移動します。移動する有効なファイルがある場合、.trashが存在しない場合、作成されます。 .trashが存在する場合、-lオプションは現在の内容をリストします。 .trashが存在する場合、-pオプションはディレクトリとその中のすべてのファイルを削除します。

このコードで何が問題になっていますか?予期しないファイルはどこにありますか?1つのファイルを閉じることができませんか?修正しようとしましたが、何もしません。 ありがとう

+4

インデントを修正してください。問題がすぐに判明してから、完了します。 –

+0

ここに投稿する前にhttp://shellcheck.netにコードをカット/ペーストする方法を学んでください。がんばろう。 – shellter

答えて

0

EOFエラーが発生しているので、適切にコードをインデントすると、原因がどこにあるかを知るようになります。最初にブロックがfiで閉じられていない場合は、最初に。

#!/bin/bash 
source_dir="~/p6_tmp" 
target_dir="~/trash" 
if [ ! -d ${target_dir} ]; 
then 
    mkdir target_dir 
else 
    echo "Displaying the contents of current directory" 
    for entry in "$source_dir"/* 
    do 
     echo "$entry" 
     echo "Please enter the filename you wish to trash:" 
     read filename 
    if [ -f ${source_dir}/${filename} ] 
    then 
     if [ -f ${target_dir}/${filename} ] 
     then 
     mv "${source_dir}/${filename}" "${target_dir}/${filename}_bak" 
     else 
     mv "${source_dir}/${filename}" "$target_dir" 
     fi 
    else 
     echo "The file ${source_dir}/${filename} does not exist" 
    fi 
fi ## <---- This is the one which I added newly 
関連する問題