2013-08-18 3 views
0

Как использовать угловые скобки в аргументах командной строки?Как использовать угловые скобки в аргументах командной строки?

Пусть вход: filename -w <input.txt>

Здесь input.txt является вторым аргументом командной строки, и это входной файл программы здесь input.txt должны быть заключены в угловых скобках (<input.txt>). Но если я использую угловые скобки, я получаю ошибку. ошибка:

sh: -c: line 0: syntax error near unexpected token `newline' 
sh: -c: line 0: `demo -w ' 
+0

Я не уверен, что понимаю, что вы пытаетесь сделать точно ... Могли бы вы, возможно, разработать? Кроме того, какова ошибка, которую вы получаете? – Jerry

ответ

4

Ваш вопрос не очень ясен. Однако мне кажется, что проблема оболочки, а не Tcl.

Я полагаю, что ваш filename - это имя исполняемого скрипта Tcl, и вы хотите дать ему input.txt в качестве параметра.

Но угловые скобки имеют особое значение для оболочки. sh интерпретирует < как стандартное перенаправление ввода, поэтому он считывает содержимое input.txt и передает его в filename через стандартный входной канал.

Затем sh интерпретирует > как стандартный вывод перенаправление, но после того, что нет никакого имени, чтобы перенаправить вывод, так что это дает вам ошибку, которую вы видите, потому что после того, как > вы нажали клавишу Return.

Итак, вы уверены, что ваш скрипт нуждается в имени файла, окруженном угловыми скобками? Если да, то избежать скобки, как

filename -w \<input.txt\> 

В противном случае, попробуйте полностью удалить скобки и использовать

filename -w input.txt 

Я надеюсь, что это помогает.

+1

Замечание: Tcl 'exec' _cannot_ direct feed' 'как аргумент для любой программы. Это известная ошибка (потому что 'exec' пытается выглядеть как синтаксис'/bin/sh', фактически не поддерживая его), который мы рассматриваем при фиксации. –