我正在使用,(uname -a 说)Linux ip-xxxx 2.6.21.7-2.fc8xen-ec2-v1.0 #1 SMP Tue Sep 1 10:25:30 EDT 2009 x86_64 GNU/Linux。
我有一个脚本,foo.sh,有 100 行代码,当我运行
head -n 5 foo.sh
该命令只是“挂起”,直到我按下 Ctrl-C。
男人头
没有提供太多见解。
到达 head 的路径是 /usr/bin/head
如果有什么不同的话,我会通过 SSH 进入服务器。
我的 shell 是 /bin/bash。
解决方法
sed 5q foo.sh
效果很好,但我希望得到这个问题的答案。谢谢大家。
答案1
我本来想建议将 符号head
链接到busybox
,但 busybox 也可以与 一起使用head -n 5 < foo.sh
。(事实上,我尝试过的那个可以与 一起使用head -n 5 foo.sh
,但可能有些版本不可以。)不过,head
您机器上的 似乎不是任何标准的head
。也许它是一个别名,或者是一个 shell 函数。
小提示:区分“挂起”的程序和只是等待用户输入的程序很重要(尽管并不总是很明显)。您的程序正在等待用户输入。这与例如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'