Голова висит или не заканчивается в Linux
Я использую, (uname -a говорит) Linux ip-xxxx 2.6.21.7-2.fc8xen-ec2-v1.0 #1 SMP Tue 1 сентября 10:25:30 EDT 2009 x86_64 GNU/Linux.
У меня есть скрипт foo.sh со 100 строками кода и при запуске
голова -n 5 foo.sh
команда просто "зависает", пока я не нажму Ctrl-C.
мужская голова
не дает особого понимания.
Путь к голове (через который) - /usr/bin/head
Я SSH-на сервер, если это имеет значение.
Моя оболочка - /bin/bash.
Обходной путь для использования
Sed 5q foo.sh
прекрасно работает, но я хотел бы получить ответ на этот вопрос. Спасибо всем.
1 ответ
Я собирался предположить, что ваш head
связан с busybox
, но даже busybox будет работать с head -n 5 < foo.sh
, (На самом деле, тот, который я пробовал, работает с head -n 5 foo.sh
, но, возможно, есть версии, которые этого не делают. Тем не менее, вполне вероятно, что head
на твоей машине нет ни одного стандарта head
, Возможно, это псевдоним или функция оболочки.
Небольшое примечание: важно (хотя и не всегда очевидно) различать "зависающую" программу и программу, которая просто ожидает ввода пользователя. Ваш ждет ввода пользователя. Это отличается от, например, sleep 3600
или же for ((i=1;i<100000000;++i)); do :; done
,
Вот несколько вещей, которые вы можете попробовать:
$ type head
head is aliased to `echo Surprise\!'
#...
$ type head
head is a function
head ()
{
echo surprise\!
}
# ...
$ type head
head is hashed (/usr/local/bin/head)
$ file /usr/local/bin/head
/usr/local/bin/head: POSIX shell script, ASCII text executable
$ type head
head is hashed (/usr/local/bin/head)
$ file /usr/local/bin/head
/usr/local/bin/head: symbolic link to `/bin/busybox'