VD: khi nhập N = 7 chương trình sẽ xuất ra tổng của 7 số chẵn liên tiếp Câu 2: Viết chương trình xuất ra thư mục và tập tin có kích thước trong khoảng vừa nhập.. Câu 4: Viết chương trình
Trang 1BÀI TẬP LẬP TRÌNH SHELL Câu 1: Nhập vào số tự nhiên N, in tất cả các số từ 1 đến N
#!/bin/bash
echo “Nhap so N”
read N
for ($i=1 ; $i<=N ;$ i++)
do
echo "i"
done
Câu 2: Chương trình tính tổng các số từ 1 đến N
#!/bin/sh
echo “Chuong trinh tinh tong 1- $1”
index=0
tong=0
while[ $index -lt $1 ]
do
index=$(($index + 1)) tong=$(($tong + $index)) done
echo "Tong 1-$1= $tong"
exit 0
Câu 3: Tính tổng N!
#!/bin/bash
echo “Chuong trinh tinh tong_$1!”
index=0
tong=0
gt=1
while[ $index -lt $1 ]
do
Trang 2index=$(($index + 1)) gt=$(($gt * $index)) tong=$(($tong + $gt)) done
echo "$1!= $gt"
echo "Tong 1-$1= $tong"
exit 0
Câu 4: Viết chương trình tổng các số chẵn/lẻ
#!/bin/bash
echo “Nhap so n”
read n
s1=0;
s2=0;
for(i=0 ; i<=n ; i++)
do
if (($i % 2==0)) then
s1=$(($s1+$i)) else
then
s2=$(($s2+$i)) fi
done
Câu 5: Tìm hai số lớn nhất và nhỏ nhất trong khoảng
#/bin/bash
# nhập đọc một mảng
function input()
{
echo -n "n= "
read n for ((i=0; i<n; i++))
Trang 3echo -n "a[$i] " = read a[$i]
done }
#so sánh hai số lấy số max
function max2nums()
{
if [ "$1" -gt "$2" ]; then
max1=$1 echo $1 else
max1=$2 echo $2 fi
return $max1 }
#tìm số lớn nhất trong mảng
function maxs()
{
max=${a[0]}
for ((i=1; i<n; i++)) do
max=$(max2nums ${a[$i]} $max) done
echo "max = $max"
}
input
maxs.exit$?
Câu 6: Đếm số dòng trong một đoạn văn
#!/bin/bash
echo “Chuong trinh dem so dong cua doan van”
{
n=0
while read line
do
n=$(($n + 1)) done
Trang 4echo “So dong cua doan van la: $n”
}
exit 0
Câu 7: Đếm số từ trong một đoạn văn
#!/bin/bash
echo “Chuong trinh dem so tu cua doan van”
{
n=0
while read line
do
for wd in$line
do
n=$(($n + 1)) done
done
echo “Tong so tu cua doan van la: $n”
}
exit 0
Một số bài tập tự giải:
Câu 1: viết chương trình tính tổng các số chẵn liên tiếp VD: khi nhập N = 7 chương trình sẽ
xuất ra tổng của 7 số chẵn liên tiếp
Câu 2: Viết chương trình xuất ra thư mục và tập tin có kích thước trong khoảng vừa nhập.
Câu 4: Viết chương trình nhập vào 1 lệnh và số nguyên N, kết thúc khi câu lệnh thành công hoặc
số lần chạy lớn hơn n, nếu câu lệnh không thành công, xuất “thử lại” và chạy lại lệnh
Câu 5: Viết chương trình nhập vào 1 số nguyên N, yêu cầu xuất tất cả số nguyên tố từ 1 đến N
(mỗi số cách 1 khoảng trắng), nếu không có số nào, xuất -1
Câu 6: Viết chương trình tìm tất cả các tập tin và thư mục bắt đầu bằng từ “bai”, xuất ra file
text.txt, sau đó xóa tất cả các tập tin và thư mục bắt đầu bằng “bai tap” Xuất ra các file text số tập tin/thư mục bị xóa Kiểm tra sự chính xác các tập tin xóa
Trang 5Câu 7: Viết chương trình 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
Câu 8: Viết chương trình nhận tên và tuổi của người dùng Xuất ra năm sẽ đạt 100 tuổi.
Câu 9: Viết chương trình tạo n thư mục có tên (tiền tố) là chuỗi s Sau đó di chuyển các thư mục
số chẵn vào thư mục số lẻ
VD: /mymkdir 10 abc -> các thư mục được tạo: abc1, abc2,… abc10 Và abc2 được chuyển vào trong abc1
Câu 10: Viết chương trình kiểm tra trong thư mục hiện tại có thư mục SYS không? Nếu không
thì tạo ra, sau đó sao chép tất cả các file có tháng tạo lập là 7 vào thư mục SYS