Труба с "тройником" в петле "for" - PullRequest
0 голосов
/ 26 июля 2011

Это, вероятно, проблема побега новичка. Я пытаюсь запустить команду в цикле, как это

$ for SET in `ls ../../mybook/WS/wsc_production/`; do ~/sandbox/scripts/ftype-switch/typesort.pl /media/mybook/WS/wsc_production/$SET ./wsc_sorter/$SET | tee -a sorter.log; done;

но я получаю sorter.log пустым. (Я уверен, что - это некоторый вывод.) Если я экранирую символ трубы (\|), у меня вообще не будет sorter.log.

Что я делаю не так?

$ bash --version
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)

Редактировать: Упс, / media / mybook / уснул, поэтому на самом деле не было вывода . Код был правильным в первую очередь. Спасибо всем за комментарии.

Ответы [ 3 ]

4 голосов
/ 26 июля 2011

Вы используете tee, поэтому, если есть вывод, вы увидите его на своем терминале.Что ты видишь?

Если вы видите вывод, вероятно, вы видите stderr, поэтому вы можете захотеть перенаправить его:

dir1=$HOME/sandbox/scripts/ftype-switch
dir2=/media/mybook/WS/wsc_production
for SET in ../../mybook/WS/wsc_production/*; do 
  $dir1/typesort.pl $dir2/$SET ./wsc_sorter/$SET 2>&1 | tee -a sorter.log
done
3 голосов
/ 26 июля 2011

Гленн сказал это хорошо.Я хотел бы предложить другой угол: вы можете переместить команду 'tee' за пределы цикла for.Преимущество этого подхода состоит в том, что он вызывается только один раз:

dir1=$HOME/sandbox/scripts/ftype-switch
dir2=/media/mybook/WS/wsc_production
for SET in ../../mybook/WS/wsc_production/*; do 
  $dir1/typesort.pl $dir2/$SET ./wsc_sorter/$SET 2>&1 
done | tee -a sorter.log
2 голосов
/ 28 июля 2011

Мои самые глубокие извинения, проблема была в другом месте, и мой сценарий вообще ничего не выводил. Теперь это работает.

Две причины, почему у меня появилась иллюзия, что проблема в том, чтобы сбежать:

  • конечно, отсутствие доверия к сценариям bash, что является следствием недостатка знаний и опыта
  • а также отсутствие внимания - мне не пришло в голову, что диск на USB засыпал, поэтому, когда я попробовал цикл, на самом деле был без вывода

Ну, это немного спотыкается на моем пути к познанию ...:)

...