2017-11-06 16 views
0

最初のコマンドライン引数であるWORDを含む(カレントディレクトリ内の)すべてのファイルに対して、新しい行に2番目のコマンドライン引数を挿入する必要があります。ファイルの先頭です。次に、2つの引数が与えられていない場合は、使用状況を出力し、ステータス4で終了する必要があります。終了ステータス1には、そのようなファイルがありませんでした。いずれかのファイルを変更できなかった場合は、ステータス2を終了します。それ以外の場合は終了ステータス0。例についてはシェルスクリプト(UNIX)で終了ステータスと引数を割り当てます

#! bin/sh 

if [ $? -eq 0 ]; then 
    exit 

fi 

if [ $? -ne 0 ]; then 
    cat * 
fi 

を私は:

は、私がこれまで試してみました何

echo "I am a string" > f1 
echo "I am not a string > f2 
./addwarn.sh "not" '*** WARNING ***' 
cat f1 f2 

I am a string 
*** WARNING *** 
I am not a string 

、スクリプトのファイル名が、その後addwarn.shあるとしスクリプトやアイデアを作る方法がわからないのですか?

+0

なぜあなたのスクリプトで '$? 'をチェックしようとしていますか? – melpomene

+0

私は終了ステータスを取得しようとしていた – Dante

+0

何かの終了ステータス? – melpomene

答えて

1
#!/bin/sh 
found=0 

usage(){ 
    echo "$0 takes two args!" 
    exit 4 
} 

#check for two args 
i=0 
for a in "[email protected]"; do 
    ((i++)) 
done 
[ "$i" -ne "2" ] && usage 

uneditable=0 
for f in $(find ./ -maxdepth 1 -type f); do 
    if grep -q $1 $f ; then 
     found=1 
     echo -e "$2\n$(cat $f)" > $f || uneditable=1 
    fi 
done 
[ "$found" = "0" ] && exit 1 
[ "$uneditable" = "1" ] && exit 2 
exit 0 
関連する問題