Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
11/02/2012 23:02 # 1
sevenrock
Cấp độ: 14 - Kỹ năng: 13

Kinh nghiệm: 139/140 (99%)
Kĩ năng: 78/130 (60%)
Ngày gia nhập: 13/10/2010
Bài gởi: 1049
Được cảm ơn: 858
Bài tập lập trình Shell-Linux


a) Làm việc với Text
Bài 1: Viết 1 chương trình Shell đọc từng dòng trong 1 file văn bản. Giữa mỗi lần hiển thị dòng
text thì có 1 câu hỏi từ Shell: “bạn có muốn đọc dòng kế tiếp ko ? y/n” nếu trả lời là “y” hoặc
“Y” thì in dòng kế tiếp, trong trường hợp ngược lại thì kết thúc chương trình đọc.
Code:
#!/bin/sh
echo – e “ nhap ten file:”
read filename
if [ ! –f “$filename” ]; then
echo “ $filename not exists”
exit 1
fi

answer=””
count=0
numlines=`wc –l $filename|sed ‘s/^ *//’|cut –d “ “ –f 1`

echo “ so dong: $numlines”
while [ “$answer”!=”n”]
do
echo –e “tiep tuc(y/n)?”
read answer
if [ “answer” = “y” ]; then
echo “doc het file rui”
exit 0
fi
count=$(($count+1))
sed –n ${count}p $filename
done
exit 0

Bài 2: Viết 1 dòng lệnh cho phép đọc 3 dòng đầu tiên trong 1 file văn bản mà không được dùng
bất cứ vòng lặp nào
Code:
sed –n 1,3p $filename
Bài 3: Viết 1 chương trình trong Shell sao cho với tham số thứ nhất là tên file text và nó sẽ in ra
màn hình nội dung file này, nhưng với tất cả ký tự đều viết hoa
Code:
#!/bin/sh
echo – e “ nhap ten file:”
read filename
if [ ! –f “$filename” ]; then
echo “ $filename not exists”
exit 1
fi

echo “file sau khi chuyen doi:”
tr ‘[a-z]’ ‘[A-Z]’ <$filename
exit 0
Bài 4: Viết 1 chương trình Shell chỉnh sửa văn bản sao cho nếu trên 1 dòng mà có nhiều hơn 2
khoảng trắng liền nhau thì được thay thế bằng 1 khoảng trắng
Code:
tr –s ' ' ' ' <$filename >$filename

b)Làm việc với các tham số

Bài 1: Viết chương trình Shell liệt kê các tham số truyền vào chương trình theo từng dòng với cú
pháp: “day la tham so thu N va co ten la NNNN” bằng các cách sau:
• Dùng vòng lặp FOR.
• Dùng vòng WHILE và lệnh SHIFT
• Dùng vòng WHILE và không dùng lệnh SHIFT.
Code:
#!/bin/sh

#while + SHIFT:
count=0
while [ “$#” –ne 0 ]
do
echo “day la tham so thu $count: $1”
count=$(($count + 1))
shift
done
#WHILE without SHIFT:
count=1
total=$(($#+1))
while [ “$*” –ge 0 ]
do
echo –n “day la tham so thu $count: ”
eval echo \$$count
count=$(($count+1))
done

#for:

count=1
for arg in “$*”
do
echo “day la tham so thu $count: $arg”
count=$(($count + 1))
done

Bài 2: Viết chương trình Shell phân tích các tham số và các đối số truyền vào tương ứng với
tham số đó. Giả sử chương trình myshell có thể nhận 4 tham số là a,b,c,d nhưng chỉ có tham số c
là có đối số truyền vào. Khi gõ câu lệnh trong Shell: myshell –abc argument –d other_argument
thì với tham số c ta có đối số là argument, ngoài ra chương trình còn 1 đối số là other_argument.

Code:
while getopts abcBig Grin option
do
case "$option"
in
a) echo “co tham so a”;;
b) echo “co tham so b”;;
c) echo “co tham so c, doi so la $OPTARG”;;
d) echo “co tham so d”;;
\?)echo “ tham so nay khong hop le”
esac
done

while [ “$OPTIND” –le “$#” ]
do
echo –n “tham so tu do: “
eval echo \$$OPTIND
shift
done
Nguồn:
http://forum.hui.vn


Nguyễn Vĩnh Trọng-K16DCD3
Smod Góc Học Tập
Yahoo:trong_nguyen15
Phone:0905360491

Punish is my wish
destroy is my will

 
Copyright© Đại học Duy Tân 2010 - 2024