3

我正在尝试做一个 bash 脚本,它只为我提供“n”命令的第一行 man。

例子:

$ sh ./start.sh ls wazup top 
ls - list directory contents
wazup - manpage does not exist
top - display Linux tasks

这是我当前的代码:

! bin/bash/
while [ -n "$1" ]
do
which $1> /dev/null
man $1 | head -6 | tail -1
if [ $? = 0  ]
then
echo "manpage does not exist"
fi
shift
done

我的输出是:

ls - list directory contents
manpage does not exist
No manual entry for wazzup
manpage does not exist
top - display Linux processes
manpage does not exist
4

2 回答 2

2

检查由返回的状态代码man,而不是在它通过管道后检查headtail这将是错误的,因为它将是的返回状态tail)。

于 2013-03-02T23:39:29.787 回答
1

非常感谢亚历克斯!

在您的帮助下不使用管道解决了这个问题!:)

这是我为任何需要它的人提供的最终代码:

#!/bin/bash
while [ -n "$1" ]
do
which $1> /dev/null
if [ $? = 0 ]
then
man -f $1
else 
echo "$1: manpage does not exist" 
fi
shift
done
于 2013-03-03T00:00:19.123 回答