assistência com criação sh

1

Gostaria de alguma ajuda para transformar os comandos abaixo em um script de shell executável (? sh?)

sudo su  
export SLOTS=/sys/devices/bone_capemgr.*/slots  
cd /lib/firmware  
echo PRU-GPIO-Enable > $SLOTS  
exit

Eu tentei entender os conceitos de wrappers e call-ins, mas por enquanto esta simples tarefa está fora do meu alcance.

Qualquer ajuda seria apreciada.

    
por james3927 02.06.2016 / 10:07

2 respostas

2

Se eu entendi o problema, você quer que o código exato que você digitou seja executável como um script de shell?

echo "
#!/bin/bash
export SLOTS=/sys/devices/bone_capemgr.*/slots
cd /lib/firmware
echo PRU-GPIO-Enable > $SLOTS
exit" > file && chmod +x file

Eu removi o sudo su , pois acredito que você execute o script usando sudo e não tenho certeza sobre quais problemas ele pode causar ao tentar definir o usuário a partir de um script.

Ou para dividi-lo, crie um arquivo e adicione o conteúdo ao arquivo usando um editor de texto (vim, emacs ou nano, talvez). Eu adicionei a primeira linha a ele para deixá-lo saber qual shell usar durante a execução, já que o bash é geralmente o padrão suficiente.

Então você salva o arquivo em um arquivo chamado, eu o chamei arquivo .

Este arquivo precisa de direitos de execução, então eu chmod +x no arquivo para torná-lo executável.

agora você pode executar o script $ ./file

Eu poderia ter perdido completamente o problema que você está tentando resolver, mas espero poder ajudar.

    
por 02.06.2016 / 11:46
2

A única parte deste script que requer a capacidade de executar como root é a gravação no parâmetro de configuração do kernel. O cd também é redundante porque nada o utiliza.

Assim, o script pode ser reescrito como este

#!/bin/bash
export SLOTS=/sys/devices/bone_capemgr.*/slots
echo PRU-GPIO-Enable | sudo tee $SLOTS >/dev/null
exit

Lembre-se de tornar o arquivo de script executável e, se apropriado, solte-o no seu $PATH . (Eu uso /usr/local/bin/ ou $HOME/bin dependendo do contexto, e ambos estão sempre no meu $PATH .)

Ou use este verso

echo PRU-GPIO-Enable | sudo tee /sys/devices/bone_capemgr.*/slots >/dev/null
    
por 02.06.2016 / 12:22