2014-10-08 4 views
0

У меня есть базовый скрипт, который запускается внутри другого скрипта. Я звоню mass_split.sh, который затем вызывает split_file.sh. splite_file.sh принимает два аргумента -s file_name.txt и -c 1 (сколько фрагментов для вырезания файла). Однако я пытаюсь запустить цикл, чтобы найти все текстовые имена файлов в каталоге ./, а затем ввести результаты в cut_file.sh. Я не получаю никаких результатов, а затем текстовые файлы не разделяются.Запуск скрипта внутри цикла - имена файлов эха

mass_split.sh

#!/bin/bash 
for f in ./*.txt 
do 
sudo bash split_file.sh -s echo "file '$f'"; -c 10 
done 
+0

Ваше использование 'sudo bash [script] ...' указывает мне, что вы не 1) устанавливаете исполняемый файл сценария или 2) используете магический shebang, иначе он будет читать 'sudo ./split_file.sh. ..'. (применяется к split_file.sh, а не mass_split.sh, который мы видим для shebang для) – Wug

+1

Вам не нужна эхо-часть. Я бы предложил в цикле for следующее: вместо того, что у вас есть: 'sudo bash split_file.sh -s $ f -c 10' –

+0

' '-c10' после команды'; 'will return: не найден. Drop ';' Кроме того, когда я исключаю 'bash split_file.sh ...' (потому что у меня нет этой команды или кода), она отлично списывает файлы. Вы также можете показать код для 'split_file.sh'. Это может помочь. – thom

ответ

1

Может быть, это что-то делать с этой неправедной точкой с запятой после строкового литерала, который почти наверняка не делать то, что вы хотите (если у вас нет другого исполняемого файла, который вы намеренно работает -c).

Смежные вопросы