使用shell脚本(unix)分配退出状态和参数

时间:2017-11-06 00:39:50

标签: shell unix sh

对于包含作为第一个命令行参数的WORD的所有文件(在当前目录中),我必须在文件头部的新行上插入第二个命令行参数。然后我必须打印使用和退出状态4,如果没有给出两个args。退出状态1是没有这样的文件。如果无法更改任何文件,则退出状态2。否则退出状态为0。

例如:

  

假设脚本文件名是 addwarn.sh ,那么,

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

到目前为止我尝试过:

#! bin/sh

if [ $? -eq 0 ]; then
    exit

fi

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

我不确定如何编写脚本,任何想法?

1 个答案:

答案 0 :(得分:1)

#!/bin/sh
found=0

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

#check for two args
i=0
for a in "$@"; 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