Bài tập shell linux có lời giải

     

bài tập xây dựng shell vào linux là trong số những từ khóa được search nhiều tuyệt nhất trên google về chủ đề bài tập thiết kế shell vào linux.

Bạn đang xem: Bài tập shell linux có lời giải

Trong bài viết này,jdomain.vn vẫn viết bài viết Tổng hợp những bài tập lập trình shell vào linux tiên tiến nhất 2020.

Xem thêm: Hướng Dẫn Cách Tạo Blog Bán Hàng, Cách Tạo Blog

*

Tổng hợp những bài tập thiết kế shell trong linux mới nhất 2020.


LẬP TRÌNH SHELL6.1. Công tác tính tổng 1-> n– Minh họa các cấu tạo while bởi vì done, và cách dùng <>, $(()).– Tập tin tong1.sh#!/bin/shecho “Chuong trinh tinh tong 1- $1”index=0tong=0while < $index -lt $1 >doindex=$(($index + 1))tong=$(($tong + $index))doneecho “Tong 1-$1= $tong”exit 0– Chạy lịch trình :chmod a+x tong1.sh./tong1 100===============================================================================================

6.2. Lịch trình tính giai vượt của một số– Minh họa các cấu tạo while vì done, và phương pháp dùng <>, $(()).– Tập tin giaithua.sh#!/bin/shecho “Chuong trinh tinh $1!”index=0gt=1while < $index -lt $1 >doindex=$(($index + 1))gt=$(($gt * $index))doneecho “$1!= $gt”exit 0– Chạy công tác :chmod a+x giaithua.sh./giaithua 5

========================================================================================6.3. Chương trình đếm số dạng của một tập tin– Minh họa các kết cấu if then fi, while bởi done, và hướng dẫn sử dụng <>, $(()).– Tập tin demdong.sh#!/bin/shecho “Chuong trinh dem so dong cua tap tin $1”

n=0while read line– 22-don=$(($n + 1))doneecho “So dong cua tap tin $1 la : $n”exit 0

– Chạy công tác :chmod a+x demdong.sh./demdong bai1.txt

6.4. Chương trình đếm số trường đoản cú của một tập tin– Minh họa các cấu trúc for vì chưng done, while bởi done.– Tập tin demtu.sh#!/bin/shecho “Chuong trinh dem so tu cua tap tin $1”

n=0while read linedofor wd in $linedon=$(($n + 1))donedoneecho “Tong so tu cua tap tin $1 la : $n”exit 0

– Chạy lịch trình :chmod a+x demtu.sh./demtu bai1.txt

===========================================================================================6.5. Công tác tìm định dạng có độ dài to nhất vào một tập tin– Minh họa các cấu trúc if then fi, while vị done.– Tập tin dongmax.sh#!/bin/shecho “Chuong trinh tim dong dai nhat vào tap tin $1”

n=0max=0dong=””while read linedon=`expr length “$line”`if < $n –gt $max >thendong=”$line”

max=$nfidoneecho “Dong vào tap tin $1 co vày dai max = $max la : $dong”exit 0

– Chạy lịch trình :chmod a+x dongmax.sh./dongmax bai1.txt

6.6. Lịch trình tìm một xâu vào một tập tin– Minh họa các kết cấu if then fi, while do done.– Tập tin timxau.sh#!/bin/shecho “Chuong trinh tim xau $1 trong tap tin $2”

wordlen=`expr length “$1”` # bởi dai tu can timwhile read textlinedotextlen=`expr length “$textline”` # bởi vì dai cua dong vua docend=$(($textlen – wordlen + 1”index=1while < $index –le $end >dotemp=`expr substr “$textline” $index $wordlenif < “$temp” = $1 >thenecho “Tim chũm $1 tai dong $textline”breakfiindex=$(($index + 1))donedoneexit 0

– Chạy lịch trình :chmod a+x timxau.sh./timxau abc bai1.txt

– search số lớn nhất trong dãy số nhập vào#/bin/bash

# input đầu vào an array of elementsfunction input()

echo -n “n= ”read n

for ((i=0; i doecho -n “a<$i> ” =read a<$i>done

#max of two numbersfunction max2nums()

if < “$1” -gt “$2” >; thenmax1=$1echo $1elsemax1=$2echo $2fireturn $max1

#max of an arrayfunction maxs()

max=$a<0>for ((i=1; i domax=$(max2nums $a<$i> $max)doneecho “max = $max”

inputmaxs

exit $?

=========================================================================================

Bài 1: Viết 1 chương trình Shell phát âm từng loại trong 1 file văn bản. Giữa mỗi lần hiển thị dòngtext thì tất cả 1 câu hỏi từ Shell: “bạn có mong muốn đọc dạng tiếp theo không ? Y/n” nếu trả lời là “y” hoặc“Y” thì in thể loại tiếp theo, trong trường hợp ngược lại thì chấm dứt chương trình đọc.Code:#!/bin/shecho – e “ nhap ten file:”read filenameif < ! –F “$filename” >; thenecho “ $filename not exists”exit 1fi

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

echo “ so dong: $numlines”while < “$answer”!=”n”>doecho –e “tiep tuc(y/n)?”read answerif < “answer” = “y” >; thenecho “doc het tệp tin rui”exit 0ficount=$(($count+1))sed –n $countp $filenamedoneexit 0

============================================================================================

Bài 2: Viết 1 định dạng lệnh có thể chấp nhận được đọc 3 loại trước tiên trong 1 tệp tin văn bản mà k được dùngbất cứ vòng lặp nàoCode:sed –n 1,3p $filename=========================================================================================

Bài 3: Viết 1 lịch trình trong Shell làm thế nào cho với tham số thứ nhất là tên tệp tin text và nó đã in ramàn hình content file này, mà lại với all ký tự các viết hoaCode:#!/bin/shecho – e “ nhap ten file:”read filenameif < ! –F “$filename” >; thenecho “ $filename not exists”exit 1fi

echo “file sau khoản thời gian chuyen doi:”tr ‘’ ‘’ exit 0

===========================================================================================

Bài 4: Viết 1 công tác Shell chỉnh sửa văn phiên bản sao mang đến nếu bên trên 1 loại mà có nhiều hơn 2khoảng trắng tức thì nhau thì được thay thế sửa chữa bằng 1 khoảng tầm trắngCode:tr –s ‘ ‘ ‘ ‘ $filenameBài 1: Viết chương trình Shell liệt kê những tham số truyền vào công tác 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ới lệnh SHIFT• dùng vòng WHILE và không sử dụng lệnh SHIFT.Code:#!/bin/sh

#while + SHIFT:count=0while < “$#” –ne 0 >doecho “day la tham so thu $count: $1”count=$(($count + 1))shiftdone#WHILE without SHIFT:count=1total=$(($#+1))while < “$*” –ge 0 >doecho –n “day la tham so thu $count: ”eval echo $$countcount=$(($count+1))done

#for:

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

Bài 5: Viết công tác Shell đánh giá các thông số và các đối số truyền vào tương xứng vớitham số đó. Giả sử chương trình myshell đủ sức nhận 4 thông số là a,b,c,d tuy nhiên chỉ gồm tham số clà gồm đối số truyền vào. Lúc gõ câu lệnh trong Shell: myshell –abc argument –d other_argumentthì với thông số c ta tất cả đối số là argument, ngoài ra chương trình còn 1 đối số là other_argument.

Code:while getopts abc:d optiondocase “$option”ina) 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”esacdone

while < “$OPTIND” –le “$#” >doecho –n “tham so tu do: “eval echo $$OPTINDshiftdone=================================================================================

Bài 6 : Viêt́ chương triǹ h shell giaỉ phương triǹ h bâc̣ nhì : 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ć đêń nhị chữ số.Code:#!/bin/bashecho -n “a= ”read aecho -n “b= ”read becho -n “c= ”read cdelta=$(echo “$b^2 – 4*$a*$c” | bc)if < $delta -lt 0 >thenecho “pt vo nghiem”elif < “$delta” -eq 0 >thenecho -n “pt co nghiem kep x= ”x=$(echo “scale=2; -$b/(2*$a)” | bc)echo “$x”elseecho “phuong trinh teo 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”fiexit 0Bài 2 :Viêt́ chương triǹ h shell liêṭ kê cać tâp̣ tin vào thư muc̣ nhâp̣ vaò bốn ̀ baǹ phím ma ̀ teo ́ kić h thước > 4KB theo hình thức sau :Tổng số tâp̣ tinTập tin 1 click thước…..tập in n kích thướcCode:#!/bin/bashSIZE=4096 # hằng sốecho -n “thu muc : ”read directoryindex=0for file in $( tìm kiếm $directory -type f)dofilesize=$(ls -l $file | awk ‘print $5‘) # trươǹ g thư ́ 5 cuả kêt́ qua ̉ lêṇ h ls –l la ̀ kić hif < $filesize -gt $SIZE > # thước filethen_filename<$index>=$file # gán man̉ g tệp tin name_filesize<$index>=$filesize # gán man̉ g file sizelet “index +=1”fidoneecho “Tong so tap tin : $index”for ((i=0 ; i doecho -e “`basename $_filename` kich thuoc: $_filesize”doneexit 0==============================================================================

Bài 7 :Viêt́ chương triǹ h shell đoc̣ môṭ danh saćh cać người dùng từ tập tin users rồi test nhìn thấy các người dùng này tất cả thuộc nhóm W3 xuất xắc không? Nêú co ́ user naò thuôc̣ nhóm thi ̀ xoá user đo ́ ra khoỉ group W3 ngươc̣ lại thi ̀ thêm người dùng đo ́ vaò group.Code:#!/bin/bashFGROUP=/etc/groupGROUPNAME=W3UFILE=usersif < ! -E $UFILE >; thenecho “File users does not exist”exit 1fiall_users=( $(cat $FGROUP | grep -w $GROUPNAME | cut -d: -f4 | tr , ” “) )# all_users=( $(cat $FGROUP | awk –F: ‘/$GROUPNAME/ print $4’ | tr , ” “) )num_usr_grp=$#all_users<

Chuyên mục: Domain Hosting