1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

5 568 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 66 KB

Nội dung

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

Trang 1

-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"

echo " x và y là 2 số mà chúng ta sẽ tính tổng"

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"

fi

Trang 2

-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

# 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

# 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

2

Trang 3

-echo "Usage - $0 value1 operator value2"

echo " Where, value1 and value2 are numeric values"

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ố"

echo " 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

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)

Trang 4

-# 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)

# 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ố"

echo " I will find sum of all digit for given number" #Kô cần quan tâm

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

4

Trang 5

-fi

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 / *

cat "$1" > /tmp/file.$$ 2>/tmp/file0.$$ #Tạo file file.$$ và đưa nd đối số vào 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.$$

Ngày đăng: 29/07/2014, 19:20

TỪ KHÓA LIÊN QUAN

w