#!/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
Frage: Verwenden der Bourne-Shell/bin/sh schreiben das Dienstprogramm aufgerufen Müll, das die folgenden Spezifikationen erfüllt:Zeile 26: Syntaxfehler: unerwartete Dateiende
Usage: trash -l | -p | {filename} *
Müll ist ein Ersatz für das Dienstprogramm rm. Anstatt Dateien zu entfernen, verschiebt der Papierkorb Dateien in ein Unterverzeichnis namens .trash in Ihrem Home-Verzeichnis. Wenn es eine gültige Datei zum Verschieben gibt, wenn .trash nicht existiert, wird sie erstellt. Wenn .trash existiert, listet die Option -l den aktuellen Inhalt auf. Wenn .trash existiert, entfernt die Option -p das Verzeichnis und alle darin enthaltenen Dateien.
Was ist falsch an diesem Code? Wo ist die unerwartete Datei, vermisse ich eine Datei zu schließen oder habe ich extra fi? Ich habe versucht zu beheben, aber es lässt mich nichts tun. Danke
Fix Ihre Einrückung und das Problem wird sofort offensichtlich sein und dann werden Sie fertig sein. –
Erfahren Sie, wie Sie Code in http://shellcheck.net ausschneiden/einfügen, bevor Sie hier posten. Viel Glück. – shellter