Bài 1 . Chương
trình tính tổng 1-> 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
Bài 2 . Chương trình
tính giai thức của một số
#!/bin/sh
echo “Chuong trinh tinh $1!”
index=0
gt=1
while [ $index -lt $1 ]
do
index=$(($index
+ 1))
gt=$(($gt
* $index))
done
echo "$1!= $gt"
exit 0
Bài 3 . Chương trình
đếm số dòng của một tệp tin
#!/bin/sh
echo “Chuong trinh dem so dong cua tap tin $1”
{
n=0
while read line
- 22-
do
n=$(($n
+ 1))
done
echo “So dong cua tap tin $1 la : $n”
}<$1
exit 0
Bài4. Chương trình
đếm số từ của một tập tin
#!/bin/sh
echo “Chuong trinh dem so tu cua tap tin $1”
{
n=0
while read line
do
for
wd in $line
do
n=$(($n
+ 1))
done
done
echo “Tong so tu cua tap tin $1 la : $n”
}<$1
exit 0
Bài5. Chương trình
tìm dòng có độ dài lớn nhất trong một tập tin
#!/bin/sh
echo “Chuong trinh tim dong dai nhat trong tap tin $1”
{
n=0
max=0
dong=””
while read line
do
n=`expr
length “$line”`
if
[ $n –gt $max ]
then
dong=”$line”
max=$n
fi
done
echo “Dong trong tap tin $1 co do dai max = $max la : $dong”
}<$1
exit 0
Bài 6.Chương trình
tìm một xâu trong một tập tin
#!/bin/sh
echo “Chuong trinh tim xau $1 trong tap tin $2”
{
wordlen=`expr length
“$1”`
# Do dai tu can tim
while read textline
do
textlen=`expr
length “$textline”`
# Do dai cua dong vua doc
end=$(($textlen
– wordlen + 1”
index=1
while
[ $index –le $end ]
do
temp=`expr
substr “$textline” $index $wordlen
if
[ “$temp” = $1 ]
then
echo
“Tim thay $1 tai dong $textline”
break
fi
index=$(($index
+ 1))
done
done
}<$2
exit 0
Bài 7. Tìm số lớn nhất
trong dãy số nhập vào
#/bin/bash
# input an array of elements
function input()
{
echo -n "n= "
read n
for ((i=0; i<n; i++))
do
echo -n "a[$i] " =
read a[$i]
done
}
#max of two numbers
function max2nums()
{
if [ "$1" -gt "$2" ]; then
max1=$1
echo $1
else
max1=$2
echo $2
fi
return $max1
}
#max of an array
function maxs()
{
max=${a[0]}
for ((i=1; i<n; i++))
do
max=$(max2nums ${a[$i]} $max)
done
echo "max = $max"
}
input
maxs
exit $?
Bài 8. 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
#!/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 9. 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
#!/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 10. Viêt́ chương
triǹ h shell giaỉ phương triǹ h bâc̣ hai :
ax2 + bx +c =0 với các tham số a,b,c nhập từ bàn phiḿ va ̀ cać
kêt́ qua chińh xać đêń hai chữ số.
#!/bin/bash
echo -n "a= "
read a
echo -n "b= "
read b
echo -n "c= "
read c
delta=$(echo "$b^2 - 4*$a*$c" | bc)
if [ $delta -lt 0 ]
then
echo "pt vo nghiem"
elif [ "$delta" -eq 0 ]
then
echo -n "pt co nghiem kep x= "
x=$(echo "scale=2; -$b/(2*$a)" | bc)
echo "$x"
else
echo "phuong trinh co 2 nghiem"
x1=$(echo "scale=2; -($b + sqrt($delta))/(2*$a)" |
bc)
echo "x1= $x1"
x2=$(echo "scale=2; -($b - sqrt($delta))/(2*$a)" |
bc)
echo "x2= $x2"
fi
exit 0