Como escrever * .sh para mv e executar arquivos

0

Eu tenho dois arquivos config.yml, mas não quero usar o cron ou digitá-los manualmente. Eu quero nomeá-los file1.bak e file2.bak. Quando estou com vontade de executá-los, quero digitar algo como ./call.sh ou ./call2.sh O script terá automaticamente privilégios de root e alterará file1.bak para config.yml e o executará. então ele irá mudar de volta para file1.bak. Eu não quero config.yml permanente porque eu uso dois ou três arquivos separados, dependendo do que eu quero que eles façam. Gostaria de receber ajuda. Para referência, este é um arquivo config.yml para o flexget. Eu deveria combinar tudo, mas eu gosto de arquivos separados para encontrar erros mais fáceis. raio

    
por ray 30.07.2013 / 14:57

2 respostas

1

#!/bin/bash 
mv /full_PATH/file1.bak config.yml
mv /full_PATH/file2.bak config2.yml 
sudo ./config.yml

Isso deve funcionar ... salve esse arquivo com "test.sh" e digite-os no terminal ./test.sh

    
por Null pointer 30.07.2013 / 15:15
1

Qualquer usuário unix deve ter o Advanced Bash Scripting Guide como um marcador, isso eu diria que é a bíblia quando se trata de shell de script e eu constantemente o uso como referência:

link

Sem saber o que é o flexget e como o config.yml é usado neste contexto, sugiro algo na linha de:

#!/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

Se você quiser usar file2.bak, adicione 2 como parâmetro ao script:

./call.sh 2

Substitua 2 por 1 se você quiser usar o arquivo1.bak.

    
por mgor 30.07.2013 / 15:27