对于包含作为第一个命令行参数的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
我不确定如何编写脚本,任何想法?
答案 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