intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài tập hệ điều hành unix

Chia sẻ: Nguyen Trong Nam | Ngày: | Loại File: DOC | Số trang:6

195
lượt xem
34
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Q.1. How to write shell script that will add two nos, which are supplied as command line argument, and if this two nos are not given show error and its usage...

Chủ đề:
Lưu

Nội dung Text: Bài tập hệ điều hành unix

  1. Translate by Vũ Đình Tùng ---------------------------------------------------------------------------------------------------- Q.1. How to write shell script that will add two nos, which are supplied as command line argument, and if this two nos are not given show error and its usage Viết shell script tính tổng của 2 số,các số được cung cấp như đối số dòng lệnh, và nếu không   đưa đủ 2 số hiện thông báo lỗi, và cách khắc phục if [ $# -ne 2 ] #Kiếm tra số đối số truyền vào then echo "Usage - $0 x y" x và y là 2 số mà chúng ta sẽ tính tổng" echo " exit 1 fi echo "Tổng của hai số `expr $1 + $2`" Q.2.Write Script to find out biggest number from given three nos. Nos are supplies as command line argument. Print error if sufficient arguments are not supplied. Viết Script để tìm ra số lớn nhất trong ba số. Các số được truyền qua đối số dòng lệnh. In lỗi, nếu   đối số không được cung cấp đầy đủ. 1) START: Take three nos as n1,n2,n3. Bắt đầu: coi 3 số là n1, n2, n3. # # 2) Is n1 is greater than n2 and n3, if yes # print n1 is bigest no goto step 5, otherwise goto next step - Nếu n1 lớn hơn n2 và n3, in n2 là số lớn nhất, nhảy đến bước 5, # # trường hợp khác nhảy đến bước tiếp theo. # # 3) Is n2 is greater than n1 and n3, if yes # print n2 is bigest no goto step 5, otherwise goto next step - Nếu n2 lớn hơn n1 và n3, in n2 là số lớn nhất, nhảy đến bước 5, # # trường hợp khác nhảy đến bước tiếp theo. # # 4) Is n3 is greater than n1 and n2, if yes # print n3 is bigest no goto step 5, otherwise goto next step - Nếu n3 lớn hơn n2 và n1, in n3 là số lớn nhất, nhảy đến bước 5, # # trường hợp khác nhảy đến bước tiếp theo. # # 5) END # # if [ $# -ne 3 ] then echo "$0: So n1 so n2 so n3 chua duoc nhap" >&2 exit 1 fi n1=$1 n2=$2 n3=$3 if [ $n1 -gt $n2 ] && [ $n1 -gt $n3 ] then echo "$n1 la so lon nhat" elif [ $n2 -gt $n1 ] && [ $n2 -gt $n3 ] then echo "$n2 la so lon nhat" elif [ $n3 -gt $n1 ] && [ $n3 -gt $n2 ] then echo "$n3 la so lon nhat" elif [ $1 -eq $2 ] && [ $1 -eq $3 ] && [ $2 -eq $3 ] then echo "tat ca 3 so bang nhau" else echo "Khong the tim duoc so lon nhat" 1
  2. Translate by Vũ Đình Tùng ---------------------------------------------------------------------------------------------------- fi 2
  3. Translate by Vũ Đình Tùng ---------------------------------------------------------------------------------------------------- Q.3.Write script to print nos as 5,4,3,2,1 using while loop. Q.3.Write kịch bản để in số dưới dạng 5,4,3,2,1 khi sử dụng vòng lặp. Answer: See Q3 shell Script. Algo: # 1) START: set value of i to 5 (since we want to start from 5, if you # want to start from other value put that value) Bắt đầu: gán giá trị cho i=5 (ở đây chúng ta bắt đầu từ 5, nếu # muốn bắt đầu từ một giá trị khác hãy nhập vào giá trị đó) # # 2) Start While Loop Bắt đầu vòng lặp While # # 3) Chechk, Is value of i is zero, If yes goto step 5 else # continue with next step Kiêm tra, giá trị của i=0? nếu đúng nhảy đến bước 5 ngược lại # tiếp tục với bước tiếp theo. # # 4) print i, decement i by 1 (i.e. i=i-1 to goto zero) and # goto step 3 In giá trị của i, giám giá trị của i đi 1 và quay lại bước 3 # # 5) END i=5 while test $i != 0 do echo "$i" i=`expr $i - 1` done Q.4. Write Script, using case statement to perform basic math operation as follows + addition - subtraction x multiplication / division The name of script must be 'q4' which works as follows $ ./q4 20 / 3, Also check for sufficient command line arguments Answer: See Q4 shell Script. Q.4. Viết Script, sử dụng các ký hiệu sau để mô phỏng hoạt động cơ bản của các phép toán học: + Phép Cộng ­ Phép trừ x nhân / phé chia if test $# = 3 then case $2 in +) let z=$1+$3;; -) let z=$1-$3;; /) let z=$1/$3;; x|X) let z=$1*$3;; *) echo cảnh báo - $2 không phải là phép toán, chỉ +,-,x,/ là phép toán exit;; esac echo Answer is $z else echo "Usage - $0 value1 operator value2" echo " Where, value1 and value2 are numeric values" 3
  4. Translate by Vũ Đình Tùng ---------------------------------------------------------------------------------------------------- echo " operator can be +,-,/,x (For Multiplication)" fi Q.5.Write Script to see current date, time, username, and current directory Viết shell scrip hiện ngày tháng hiện hành, thời gian, tên người dùng, và thư mục hiện hành. Answer: See Q5 shell Script. echo "Hello, $LOGNAME" echo "Current date is `date`" echo "User is `who i am`" echo "Current direcotry `pwd`" Q.6.Write script to print given number in reverse order, for eg. If no is 123 it must print as 321. Viết Shell script để in số đảo ngược, ví dụ: nếu số là 123 thì in ra 321 Answer: See Q6 shell Script. # Algo: 1) Input number n - Nhập vào số n # 2) Set rev=0, sd=0 - đặt rev=0(Số đảo ngược), sd=0(Số trái nhất) # # 3) Find single digit in sd as n % 10 it will give (left most digit) Tìm số sd=n%10(% Phép chia lấy phần dư) (là số phải nhất của n) # 4) Construct revrse no as rev * 10 + sd - Xây dựng số rev: rev=rev*10+sd # 5) Decrment n by 1 (Chỗ này sai) phải gán n=n/10 (Phép chia lấy phần nguyên) # # 6) Is n is greater than zero, if yes goto step 3, otherwise next step n vẫn còn lớn hơn 0? nếu đúng, quay lại bước 3, ngược lại đến bước tiếp # 7) Print rev - In số đảo ngược rev # # if [ $# -ne 1 ] # kiểm tra số đối số nhập vào (Ở đây chỉ cần nhập 1 đối số) then echo "Usage: $0 Chưa nhập số" I will find reverse of given number -" # Không cần quan tâm echo " For eg. $0 123, I will print 321" # Không cần quan tâm echo " exit 1 fi n=$1 rev=0 sd=0 while [ $n -gt 0 ] #Vòng lặp down to do sd=`expr $n % 10` rev=`expr $rev \* 10 + $sd` n=`expr $n / 10` #VD: nếu n=123 khi gán n=n/10 thì n=12 done echo "Số đảo ngược là $rev" Q.7.Write script to print given numbers sum of all digit, For eg. If no is 123 it's sum of all digit will be 1+2+3 = 6. Q.7.Viết Shell scrip để in tổng tất cả các số trong chữ số, ví dụ: nếu số là 123 ta phải in ra tổng   của tất cả các chữ số  1 2 3 = 6. Algo: 1) Input number n - Nhập vào số n(Truyền qua đối số) # 2) Set sum=0, sd=0 - Đặt sum=0 (Số tổng), Sd=0 # # 3) Find single digit in sd as n % 10 it will give (left most digit) Tìm được số sd=n%10(% Phép chia lấy phần dư) (là số bên phải nhất của n) # 4) Construct sum no as sum=sum+sd - Xây dựng số tổng sum=sum+sd # 5) Decrment n by 1 (Chỗ này sai) phải Gán n=n/10 (Chia lấy phần nguyên) # 4
  5. Translate by Vũ Đình Tùng ---------------------------------------------------------------------------------------------------- # 6) Is n is greater than zero, if yes goto step 3, otherwise next step n vần lớn hơn 0? nếu đúng, nhảy đến bước 3, nếu không chuyển bước tiếp. # 7) Print sum - In tổng # # if [ $# -ne 1 ] #Kiểm tra số đối số nhập vào (Ở đây chỉ cần 1 đối số) then echo "Usage: $0 kiếm tra đối số" I will find sum of all digit for given number" #Kô cần quan tâm echo " echo " For eg. $0 123, I will print 6 as sum of all digit (1+2+3)" exit 1 fi n=$1 sum=0 sd=0 while [ $n -gt 0 ]#Vong lặp down to do sd=`expr $n % 10` #lấy số phải nhất của n,Vd: n=123 thì sd=3 sum=`expr $sum + $sd` #Cộng dồn vào tổng sum n=`expr $n / 10` #VD: nếu n=123 khi gán n=n/10(Chia lấy phần nguyên) thì n=12 done echo "Tổng của tất cả các chữ số là $sum" Q.8.How to perform real number (number with decimal point) calculation in Linux Làm thế nào để tính toán số thực (Số với phần thập phân) trong linux Trả lời: Sử dụng lệnh bc trong linux Q.9.How to calculate 5.12 + 2.5 real number calculation at $ prompt in Shell ? Làm thế nào để thực hiện phép tính số thực 5.12+2.5 với dấu nhắc $ trong Shell Scrip Trả lời: Sử dụng lệnh echo $ 5,12 + 2,5 | bc Q.10.How to perform real number calculation in shell script and store result to third variable , lets say a=5.66, b=8.67, c=a+b? Answer: See Q10 shell Script. Q.10. Làm thế nào để tính toán số thực trong Shell scrip với 3 biến lưu trữ, hãy thực hiện với a =   5.66, b = 8.67, tính c = a + b? a=5.66 b=8.67 c=`echo $a + $b | bc` echo "$a + $b = $c" Q.11.Write script to determine whether given file exist or not, file name is supplied as command line argument, also check for sufficient number of command line argument Answer: See Q11 shell Script. Q.11. Viết Shell Scipt để xác định tập tin đã cho có tồn tại hay không, tên tập tin được cung cấp   như đối số dòng lệnh, Kiểm tra xem có đủ đối số không if [ $# -ne 1 ] #Kiểm tra số đối số truyền vào (ở bài này chỉ cần 1) then echo "Usage - $0 file-name" exit 1 fi 5
  6. Translate by Vũ Đình Tùng ---------------------------------------------------------------------------------------------------- if [ -f $1 ] #Kiểm tra sự tồn tại của tên file (tên file được truyền vào $1) then echo "$1 File tồn tại" else echo "Xin lỗi,File $1 không tồn tại" fi Q.12.Write script to determine whether given command line argument ($1) contains "*" symbol or not, if $1 does not contains "*" symbol add it to $1, otherwise show message "Symbol is not required". For e.g. If we called this script Q12 then after giving , $ Q12 /bin Here $1 is /bin, it should check whether "*" symbol is present or not if not it should print Required i.e. /bin/*, and if symbol present then Symbol is not required must be printed. Test your script as $ Q12 /bin $ Q12 /bin/* Answer: See Q12 shell Script Q.12. Viết Shell Script để xác định đối số dòng lệnh ($ 1) truy ền vào có ch ứa ký t ự "*" hay không, nếu $ 1 không có ký tự "*" ta thêm nó vào $ 1, nếu có ký tự "*" hi ển thị thông báo "Không t ồn t ại ký tự". Giả sử nếu ta đặt tên Shell Cript này là q12 thì khi thực hi ện s ẽ đ ưa ra: $ Q12 / bin Ở đây $1 là / bin, cần kiểm tra xem ký tự "*" có tồn tại hay không n ếu không c ần in / bin / *, và n ếu tồn tại ký tự "*" không cần thiết phải được in. kết quả Shell script thử nghi ệm: $ Q12 / bin $ Q12 / bin / * 2>/tmp/file0.$$ #Tạo file file.$$ và đưa nd đối số vào file cat "$1" > /tmp/file.$$ grep "*" /tmp/file.$$ >/tmp/file0.$$ #tìm * trong nd file if [ $? -eq 1 ] #Chỗ này chưa hiểu $? Là gì then echo "Required i.e. $1/*" else echo "Không tồn tại ký tự" fi rm -f /tmp/file.$$ rm -f /tmp/file0.$$ 6
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2