Помогите с простым скриптом

Все эти (и другие) решения полностью провалились для меня, поэтому я нашел другое.

Вам нужен автономный установочный пакет (у меня был x64), и вам нужно вручную установить только образцы. Открытие ISO-файла, например, 7-Zip из местоположения Setup\WinSDKSamples_amd64 и запуск WinSDKSamples_amd64.msi сделали это для меня.

Затем вы просто используете обычный установочный файл, чтобы РЕМОНТНО установить и выбрать любые компоненты, которые вы хотите.

1
задан 04.08.2019, 21:24

3 ответа

Я думаю, что лучший сценарий будет читать ввод командной строки - что-то вроде:

#/bin/bash
echo "Shall back up $1 as $2 - press Ctrl-C to exit if this is not what you want" 
sleep 3
echo "Backing Up..."
tar -cvpzf $2.tar.gz $1
echo "Backing up of $1 Complete"
notify-send -t 8000 "Backing up of $1 complete"
exit

Затем вы можете ввести команду следующим образом:

COMMAND "/path/to/input" "/path/to/output"

notify-send также отправьте графическое уведомление, чтобы оно сообщило вам, когда это будет сделано.

Это только мое предложение - через секунду я посмотрю на ваше ...


Проблема с вашим скриптом заключается в следующем. Он скажет успешный, как $CONT1 = y, поэтому он выполнит команду резервного копирования tar..., а затем эхо Success. Эхо будет только неудачным, если вы введете параметр continue не как y. Таким образом, для этого конкретного сценария лучшим его концом будет (это только изменит то, что echo указано в выводе терминала) :

if [ "$CONT1" == "y" ]; then
        tar -cvpzf "$after.tar.gz" "$back"
        echo "Backing up File finished!" ;
else
        echo "Did not backup" ;
fi
exit

Это кажется work:

#!/bin/bash
echo ""
echo "Which File you want to backup?";
read input
echo "Where do you you want it to be backed up? (include .tar.gz extension)";
read output
read -p "Continue (y/n)? " CONT
if [ "$CONT" == "y" ]; then
        tar -cpf "$input" "$output" || 'echo "Backing Up Failed" && exit;'
    echo "Backing Up Successful!"
else
        echo "Did not backup" ;
fi
exit

|| после команды означает, что она выполнит 'echo "Backing Up Failed" && exit;' только в том случае, если команда выдаст ошибки, что заставит ее повторить неудачу и затем завершиться. Если команда не выдаст ошибок, она проигнорирует это, отобразит сообщение Successful и завершится.

Это может иметь проблемы с путями к некоторым файлам, поэтому вы можете использовать другой сценарий, который я предложил ...

Надеюсь, это поможет.

2
ответ дан 08.10.2019, 18:35

Я добавляю еще одно условие if в ваш скрипт. Это будет работать, как вы хотите. Смотрите модифицированный скрипт ниже.

#!/bin/bash

function backups_remove_file()
{
    echo "Make Backups Of Files(s)"
    echo "Which File You Wanna To Make Backups?"
    read back
    echo "What's The File's Name Should Be After Backups? And Where?"
    read after
    read -p "Continue (y/n)?" CONT1
    if [ "$CONT1" == "y" ]; then
        tar -cvpzf "$after.tar.gz" "$back"
        if [ $? == 0 ]; then
            echo "Backups File Successful !"
        else
            echo "Backups File Unsuccessful !"
            exit 1
        fi
    else
        echo "Backups File Unsuccessful !" 
    fi
}

backups_remove_file

$? хранит состояние выхода последней команды в оболочке. в случае успеха это будет 0

2
ответ дан 08.10.2019, 18:35

Это работает:

function backups_remove_file
{
    echo ""
    echo "2. Make Backups Of Files(s)"
    echo ""
    echo "Which File You Wanna To Make Backups?"
    read back
    echo "What's The File's Name Should Be After Backups? And Where?"
    read after
    read -p "Continue (y/n)?" CONT1
    if [ "$CONT1" == "y" ]; then
        if tar -cvpzf "$after.tar.gz" "$back"; then
            echo "Backups File Successful !"
        else
            echo "Backups File Unuccessful !"
        fi
    else
        echo "User selected no"
    fi
}

Причина в том, что строка после tar ... выполняется независимо от кода выхода. Это означает, что он всегда будет отражать «успешно». Bash не вызывает автоматически исключение / ошибку, если что-то пошло не так.

Это исправлено с помощью tar ... в операторе if, поэтому его код выхода влияет на то, какой путь он принимает из оператора if.

1
ответ дан 08.10.2019, 18:35

Теги

Похожие вопросы