Linux环境编程习题_编程题_答案
Linux 境编程-人民邮电出版社-姜林美
课后习题(编程题)答案
第三章 1
第五章 4
第六章 9
第七章 19
第八章 22
第九章 35
第十章 38
三章
15. 请编程实现:判断任一参数给出的是不是字符设备文件,如果是则将其拷贝到 /dev 目录下。(注:本
题不妥,为方便测试可将 “字符设备文件”改为“符号连接文件”,“/dev ”改为 “家”。相应地以下答案
中的“-c ”,改为“-h ”, “/dev ”改为“~/ ”)
#!/bin/bash
while [ $1 ]; do
if [ -c $1 ]; then
mv $1 /dev
fi
shift
done
更改后答案
#!/bin/bash
while [ $1 ]; do
if [ -h $1 ]; then
mv $1 ~/
fi
shift
done
16. 请编写程序,分别用while、until 和for 循环计算从1 到“位置参数$1 所给出的数”之间的所有能被3
整除的数之和。
#!/bin/bash
sum=0
for((i=1; i<=$1; i++)); do
if ((i%3==0)); then
((sum+=i))
fi
done
echo $sum
17. 请编程实现:打印边长为n 的由“*”号组成的等边三角 , 如:
*
* *
* * *
* * * *
* * * * *
其中变量n 的值通过命令行参数传入。
#!/bin/bash
if [ -z $1 ]; then
echo "Please provided a number"
exit
fi
for (( i=1; i<=$1; i++ )); do
for (( j=0; j
echo -n " "
done
for (( j=0; j
echo -n "* "
done
echo "";
done
18. 设/tmp 路径下有 1000 个文件,文件名的格式为:filename_YYYYMMDD_xxx.dat (其中YYYYMMDD
为8 位数字表示的日期,xxx 为三位数字表示的序列号,例如:backup089.dat )。请编程实现:
将 这些 文件 名 依次 改 名 为 YYYYMMDD_filename_yyy.dat ,其中 yyy=1000-xxx 。例 如,将
backup089.dat 改名backup_911.dat 。
#!/bin/bash
# backup089.dat => backup_911.dat
for file in /tmp/ *.dat; do
f="${file#/ */}" # filename