3

「n」コマンドの最初の行だけを表示するbashスクリプトを実行しようとしています。

例:

$ 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 に答える