2016-05-03 5 views
0

Когда я пытаюсь запустить этот скрипт, появляется эта ошибка: «Операция extra/home/ubuntu/Desktop/Destino /», и я не знаю, почему, кто-то мне помогает.Error Shell Script

#!/bin/bash 

input="/home/ubuntu/Desktop/Output/SAIDA.txt" 
dt=`date +"%Y%m%d%H%M%S"` 

layout='C' 

if [ -e "$input" ] ; then 
    header=$(head -n 1 $input) 
    export header 

    tail -n +2 $input | split -l 99 -d --additional-suffix=.txt \ --filter='{ printf %s\\n "$header"; cat; }' >/home/ubuntu/Desktop/Destino/$FILE - NOMENCLATURA_${dt}_ 

    for arquivo in ´Is/home/ubuntu/Desktop/*.txt´ 
    do 
     NOME= ´cat $arquivo | cut -d "." -f1´ 
     touch/home/ubuntu/Desktop/Destino/$NOME.cfg 
     echo $dt > $NOME.cfg 
     echo $layout > $NOME.cfg 
    done  

else 
    echo "The input file does not exist." 
fi 
+2

Существует множество ошибок. http://www.shellcheck.net может рассказать вам больше. – Biffen

+0

$ FILE не определен. Но, как сказал @Biffen, есть многочисленные ошибки, которые вам придется пройти. – jgshawkey

ответ

2

У вас в вашем скрипте есть странные символы цитаты. Чтобы заменить вывод команды, оберните ее $() или обратными окнами, а не ´ символов.

for arquivo in ´Is/home/ubuntu/Desktop/*.txt´ 

Я думаю Is должен был быть ls, но ушел из пространства после него. Но нет необходимости разбирать вывод ls, просто используйте шаблон.

for arquivo in /home/ubuntu/Desktop/*.txt 

На этой линии:

tail -n +2 $input | split -l 99 -d --additional-suffix=.txt \ --filter='{ printf %s\\n "$header"; cat; }' >/home/ubuntu/Desktop/Destino/$FILE - NOMENCLATURA_${dt}_ 

вам нужно поместить имя выходного файла в кавычках, так как пространства.

tail -n +2 $input | split -l 99 -d --additional-suffix=.txt \ --filter='{ printf %s\\n "$header"; cat; }' >"/home/ubuntu/Desktop/Destino/$FILE - NOMENCLATURA_${dt}_" 

Кроме того, переменная FILE не установлен, то вам нужно назначить, что раньше.

На этой линии:

NOME= ´cat $arquivo | cut -d "." -f1´ 

вы снова используете неправильный тип кавычек, чтобы захватить вывод команды. Кроме того, у вас не должно быть места между = и значением, которое вы хотите назначить. Оно должно быть:

NOME=$(cat $arquivo | cut -d "." -f1) 

Там нет необходимости делать export header. Переменная используется только в этом скрипте, а не в каких-либо дочерних процессах.