BASH - Comando não encontrado - LVM sobre script de automação LUKS

1

Eu tenho trabalhado um script bash para automatizar o processo de abertura e fechamento de um disco rígido externo LVM sobre LUKS. No entanto, continuo a receber erros na linha 28:

$(vgchange -a n ; cryptsetup luksClose vol)

O erro que recebo:

$ sudo ./encryption.sh -l
Locking System..............
./encryption.sh: line 28: 0: command not found
System Locked!

Aqui está o restante do código para referência:

if [ $1 = -u ] ; then
    $(cryptsetup luksOpen /dev/sdb2 vol)
    echo "Unlocking.................." | pv -qL 10
    $(mount /dev/mapper/vol-lvroot /mnt ; mount /dev/mapper/vol-lvvar /mnt/var ; mount /dev/mapper/vol-lvhome /mnt/home ; mount /dev/sdb1 /mnt/boot)
    echo "System Mounted!" | pv -qL 10
#   exit 0
fi

if [ $1 = -l ] ; then
    $(umount /mnt/var ; umount /mnt/home ; umount /mnt/boot ; umount /mnt/)
    echo "Locking System.............." | pv -qL 10
    $(vgchange -a n ; cryptsetup luksClose vol)
    echo "System Locked!" | pv -qL 10
    exit 0
fi

Outras informações:

  1. Eu não recebo nenhum erro aparente ao executar o comando em questão por si mesmo de forma interativa.

  2. Eu sou novo em escrever bash, então quaisquer recomendações e críticas construtivas são bem-vindas.

  3. O processo parece ser concluído com êxito, mas não entendo o erro ou como fazê-lo desaparecer.

  4. Após mais pesquisas ao executar o código conturbado sozinho no modo interativo, ele fornece saída após a execução.

Isso é dado depois de postar o código conturbado de forma interativa.

0 logical volume(s) in volume group "vol" now active
    
por Jay Holister 13.11.2014 / 08:07

1 resposta

2

Ao colocar comandos dentro de um bloco $( .. ) , você está fazendo a substituição de comando. Isso significa que os comandos dentro desse bloco são executados, e a saída desses comandos será avaliada pelo bash como outros comandos a serem executados. Então, se o comando gerar o texto

0 logical volume(s) in volume group "vol" now active

então o shell tentará executá-lo como um comando e, quando iniciar com 0 , procurará um comando com esse nome.

Por que você está colocando os comandos em $( .. ) block? O que você está tentando conseguir com isso?

    
por 13.11.2014 / 09:16