UNIX-Shell Scripting

2

Ao executar o script abaixo, estou recebendo um erro:

Erro de sintaxe na linha 1: '(' não é esperado.

sudo su - user1 -c "cd $HOME ; tar -cvf $HOME/mine.tar 'cat /tmp/$LOGNAME/List'  "

onde o arquivo de lista contém o nome de alguns outros arquivos.

Por favor me ajudem com alguma solução.

Atenciosamente, Sumit

    
por Sumit Arora 25.06.2013 / 22:32

2 respostas

0

Seu shell está expandindo as coisas muito cedo.

O $LOGNAME tem um ( ? Ou o conteúdo de /tmp/$LOGNAME/List ?

O Bash expandirá $HOME e $LOGNAME antes de serem passados para su - quando su tentar passá-los para sh ou bash , eles possuem tokens impróprios.

    
por 25.06.2013 / 22:48
0

Por favor, faça os comandos de linha única para múltiplas linhas e execute, como escrever isto para run.sh

#!/usr/bin/env bash
cd $HOME
tar -cvf $HOME/mine.tar
cat /tmp/$LOGNAME/List

Conceda permissão de execução ( chmod +x run.sh ) e execute esse script como sh path to the file(run.sh)

por exemplo: sh /home/run.sh

    
por 23.12.2013 / 15:34