2010-11-12 2 views
2

Я попытался запустить команду, прочитав ее из текстового файла, но это не удалось. когда я вхожу в ту же самую линию, она работает, жесткая. что он даже попытался выполнить команду move, но получил ошибку, которая переводится в «Файл или каталог не найден». очевидно, что ошибка здесь не говорит правду. может кто-нибудь объяснить это?неправильное использование выполнения backticks?

[email protected]:~/spr/man/de$ head -n7 mkdoc|tail -n1 
mv nutzer.1.gz ~/public_html/man/man1/ 
[email protected]:~/spr/man/de$ `head -n7 mkdoc|tail -n1` 
mv: Verschieben von „nutzer.1.gz“ nach „~/public_html/man/man1/“ nicht möglich: Datei oder Verzeichnis nicht gefunden 
[email protected]:~/spr/man/de$ ls 
gzip mkdoc nutzer.1 nutzer.1.gz nutzer.pod rbsh 
[email protected]:~/spr/man/de$ mv nutzer.1.gz ~/public_html/man/man1/ 
[email protected]:~/spr/man/de$ 

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

ответ

2

`head -n7 mkdoc|tail -n1` заменяется выводом команды, которая mv nutzer.1.gz ~/public_html/man/man1/. Этот вывод затем интерпретируется как команда, mv.

Это не удается, поскольку расширение тильды уже выполнено. ~ не заменяет ваш домашний каталог на этом этапе; это просто обычный тильда. Это как если бы вы пытались выполнить

'mv' 'nutzer.1.gz' '~/public_html/man/man1/' 

По той же причине вы не можете использовать $HOME, или второй набор обратные кавычки, или любой другой динамической конструкции. Для этого вам нужно будет использовать eval или передать строку во вторую оболочку.

eval `head -n7 mkdoc|tail -n1` 
bash -c "`head -n7 mkdoc|tail -n1`" 
1

Тильда «~» не интерполируется внутри обратных тактов.

[редактировать] Вместо этого вы должны быть в состоянии использовать: Eval "$ (голова -n7 mkdoc | хвост -n1)"

+0

, чтобы я мог использовать $ HOME вместо я взять его – vecvan

+0

нет, но вы можете использовать Eval: –

+0

Eval "голова -n7 mkdoc | Tail -n1" # должны работать –

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