帮忙写几个简单的Unix shell程序啊.... 很急啊!!! 懂的来写下!!!

2024-11-27 12:46:33
推荐回答(3个)
回答1:

3.
1).把PATH 变量导出来,其实就是为了给后面的shell子程序使用,在这里其实相当于在原有的PATH基础上添加了一个/usr/games路径。
2).从文件 /home/abc.data里面获取第2列,以分号(;)作为列分隔符,d代表分隔符(delimer),f代表字段(field)后面跟着具体的那一个字段,或者字段范围,如-f2-5就是截取第2列到第5列的内容
4.假设原有文件为a,那么可以如下方法做:
cat a>b,创建了b文件
cp b c,复制b文件,生成c文件
添加内容,vi c进去可以了

5.这个要根据(df)命令具体执行情况来进行编码,比如我的系统执行情况如下:
[u@H /billing/user/xufc]$df -vk /home
/home (/dev/vg00/lvol5 ) : 130104 total allocated Kb
124288 free allocated Kb
5816 used allocated Kb
5 % allocation used
[u@H /billing/user/xufc]$
那么就可以编写如下脚本:
#!/bin/bash
Used=`df -vk /home|grep "allocation used"|awk '{print $1}'`
if [ $Used -gt 90 ]
then
echo "用户文件系统磁盘使用负荷量偏大"
else
if [ $RL -gt 50 ]
then
echo "用户文件系统磁盘使用负荷量正常"
else
echo "用户文件系统磁盘使用负荷量小"
fi
fi

6.先用find(或其他命令组合如ls xxx|grep xxx)找到相关c文件和目标文件,然后for循环打印出来
#!/bin/bash
#查找a_sub下此文件及其目标文件
afile=`find /$HOME/a_sub/ -name "*.c" -o -name "*.o"`
bfile=`find /$HOME/b_sub/ -name "*.c" -o -name "*.o"`
#合并找到的文件到cfile中
cat afile bfile>cfile
for i in ${cfile}
do
echo $i
done

7.我仿照了个数据,请参考脚本和结果:
[u@H /billing/user/xufc/project]$cat 1.txt
班级 数学 语文
A 20 90
A 30 80
A 40 60
B 40 50
B 60 40
C 90 30
C 80 70
C 70 40
C 60 30
[u@H /billing/user/xufc/project]$./statistic.sh
班级 数学 语文
A 30 76.6667
B 50 45
C 75 42.5
[u@H /billing/user/xufc/project]$cat statistic.sh
#!/usr/bin/ksh
#输出文件头
sed -n '1p' 1.txt>outfile
#计算出班级
ban=`sed -n '2,$p' 1.txt|cut -d" " -f1 |sort -u`

for i in ${ban}
do
grep $i 1.txt>tmpfile
#列统计
awk '{count=count+1;sum=sum+$2;sum2=sum2+$3}END{print $1"\t"sum/count"\t"sum2/count}' tmpfile>>outfile
done
#把结果打印到屏幕上面
cat outfile
[u@H /billing/user/xufc/project]$

希望对你有帮助!!

回答2:

3、请解释以下命令完成了什么功能?
1)%export PATH="$PATH:/usr/games"
设置当前shell的 PATH环境变量

2)%cut -d;-f 2 /home/abc.data
截取/home/abc.data文件 以;为分隔符的第二个域

4.cat file1 > file2;cp file2 file3;cat file3 >> file1

5
#!/bin/bash
RL=`df /home | grep -v 已用 | awk '{print $5}' | awk -F% '{print $1}'`
if [ $RL -gt 90 ]
then
echo "用户文件系统磁盘使用负荷量偏大"
else
if [ $RL -gt 50 ]
then
echo "用户文件系统磁盘使用负荷量正常"
else
echo "用户文件系统磁盘使用负荷量小"
fi
fi

6.
#!/bin/bash
cfile=(`find /home/$USER/a_sub/*.c /home/$USER/a_sub/*.c`)

for i in ${cfile[*]}
do
echo $i
done

第七个给一个score.txt文件。

回答3:

1)%export PATH="$PATH:/usr/games" >> 添加/usr/games到PATH环境变量里
4、使用cat和重定向命令实现建立1个文件,然后复制文件,再在文件的末尾添加内容。
>> echo "" > /opt/newfile 建立一个空文件
>> cat /opt/newfile > /opt/copynewfile 复制文件
>> echo >> /opt/copynewfile 在文件末尾添加