示例i运行 sh mycode Manu gg44
我需要获取名为Manu的文件 内容: gg44 192.168.1.2。(第二行)(这个数字我在下面解释)
(在目录DIR = / h / Manu / HOME / hosts中已有文件Alex 猫亚历克斯 FF55 198.162.1.1。(第二行))
因此mycode使用第一行gg44创建名为Manu的文件,并在第二行生成IP。 但是为了生成IP,他已经与Alex文件IP进行了比较。所以Manu的第二行必须是198.162.1.2。如果我们在目录中有多个文件,那么我们必须检查所有文件的所有第二行,然后根据它们生成。
[CODE]
DIR=/h/Manu/HOME/hosts #this is a directory where i have my files (structure of the files above)
for j in $1 $2 #$1 is Manu; $2 is gg44
do
if [ -d $DIR ] #checking if directory exists (it exists already)
then #if it exists
for i in $* # for every file in this directory do operation
do
sort /h/ManuHOME/hosts/* | tail -2 | head -1 # get second line of every file
IFS="." read A B C D # divide number in second line into 4 parts (our number 192.168.1.1. for example)
if [ "$D" != 255 ] #compare D (which is 1 in our example: if its less than 255)
then
D=` expr $D + 1 ` #then increment it by 1
else
C=` expr $C + 1 ` #otherwise increment C and make D=0
D=0
fi
echo "$2 "\n" $A.$B.$C.$D." >/h/Manu/HOME/hosts/$1
done done #get $2 (which is gg44 in example as a first line and get ABCD as a second line)[/CODE]
在结果中,它创建了名为Manu和第一行的文件,但第二行完全错误。它给了我...... 1。 还有错误消息 sort:open failed:/ h / u15 / c2 / 00 / c2rsaldi / HOME / hosts / yu:没有这样的文件或目录
yu n ... 1。
答案 0 :(得分:0)
#!/bin/bash
dir=/h/Manu/HOME/hosts
filename=$dir/$1
firstline=$2
# find the max IP address from all current files:
maxIP=$(awk 'FNR==2' $dir/* | cut -d. -f4 | sort -nr | head -1)
ip=198.162.1.$(( maxIP + 1 ))
cat > $filename <<END
$firstline
$ip
END
当你收到超过255个文件时,我会让你决定做什么......