У меня есть два файла config.yml, но я не хочу использовать cron или вводить их вручную. Я хочу назвать их file1.bak и file2.bak. Когда я в состоянии запустить их, я хочу напечатать что-то вроде ./call.sh или ./call2.sh. Сценарий автоматически получит root privelege, изменит file1.bak на config.yml и запустит его. тогда он вернется к файлу file1.bak. Я не хочу постоянного config.yml, потому что я использую два или три отдельных файла в зависимости от того, что я хочу, чтобы они делали. Буду признателен за любую помощь. Для справки это файл config.yml для flexget. Я должен объединить все, но мне нравятся отдельные файлы, чтобы легче находить ошибки. лучей
#!/bin/bash
mv /full_PATH/file1.bak config.yml
mv /full_PATH/file2.bak config2.yml
sudo ./config.yml
Это должно сработать ... сохраните этот файл, скажем, "test.sh" и их в терминальном типе ./test.sh
У любого пользователя UNIX должно быть Усовершенствованное Руководство по созданию сценариев Bash как закладка, это я сказал бы, библия когда дело доходит до сценариев оболочки, и я постоянно использую его в качестве ссылки:
http://www.tldp.org/LDP/abs/html/
Не зная, что flexget и как config.yml используется в этом контексте, я предложил бы что-то в строке:
#!/usr/bin/env bash
FILE=$1
CONFIG_PATH="/home/user/yml"
CONFIG_FILE="$CONFIG_PATH/file$FILE.bak"
if [ ! -e $CONFIG_FILE ]
then
echo "Sorry, $CONFIG_FILE does not exist"
exit 1
fi
cp $CONFIG_FILE /home/user/config.yml
sudo /home/user/config.yml
rm /home/user/config.yml
Если бы Вы затем хотите использовать file2.bak, Вы добавили бы 2 в качестве параметра к сценарию:
./call.sh 2
Замените 2 1, если Вы хотите использовать file1.bak.