Linux:Shell Scripts
A lap korábbi változatát látod, amilyen Admin (vitalap | szerkesztései) 2024. március 26., 10:05-kor történt szerkesztése után volt.
A lap korábbi változatát látod, amilyen Admin (vitalap | szerkesztései) 2024. március 26., 10:05-kor történt szerkesztése után volt.
- Create a text file of any content with mcedit! The file name should be test.txt!
feri@aries:~$ mcedit test.txt
- Create a shell script that prints the following text: Hello world!
#!/bin/bash
echo "Hello world!"
- Create a program that assigns a value to variable named A and then shows its value.
#!/bin/bash
A=12
echo "A=$A"
- Create a program that asks for the user's name from the keyboard and greets him in person!
#!/bin/bash
echo -n "Your name: "
read NAME
echo "Nice to see you, $NAME"
- Create a program that prints the English abbreviation of today's name! The name of the current day can be obtained by properly parameterizing the date command. (Use the man page of the date command!)
#!/bin/bash
CURRENT_DATE=`date '+%a'`
# CURRENT_DATE=$(date '+%a')
echo "The name of the day is: $CURRENT_DATE"
- Create a program that asks the length of the side of a square and then displays its perimeter and area. The name of the program should be square!
#!/bin/bash
echo "Perimeter and area"
# Ask the length
echo -n "Length of a side: "
read SIDE
# Count the perimeter and area
PER=`expr $SIDE \* 4`
AREA=`expr $SIDE \* $SIDE`
# Show the result
echo "The perimeter is $PER, area is $AREA of a $SIDE square."
- Create a program that takes its parameters from a configuration file! Read the variables named NAME and AGE from the params.conf file and print their values.
#!/bin/bash
. params.conf
echo "Name: $NAME, age: $AGE years."
Content of params.conf:
NAME="Kiss Lajos"
AGE=60
- Create a program that asks for a user's login name and looks up its full name in the / etc / passwd file! The name of the program should be usersearch.
#!/bin/bash
echo -n "Login name: "
read NAME
FULLNAME=`cat /etc/passwd | grep ^$NAME: | cut -d: -f5`
echo "Full name: $FULLNAME"
Kivonat: if, case, &&, ||
- Create a program that determines if a number requested at run time is greater than 5!
#!/bin/bash
echo -n "Number:"
read NUMBER
if [ "$NUMBER" -gt 5 ] ; then
echo "A $NUMBER greater than 5"
else
echo "A $NUMBER less than 5"
fi
- Create a program that prompts for two numbers and prints the larger one on the screen. If the two numbers are equal, it is also displayed.
#!/bin/bash
# Created by Magyar Péter
echo -n "First number:"
read NUMBER1
echo -n "Second number:"
read NUMBER2
if [ "$NUMBER1" -gt "$NUMBER2" ] ; then
echo "A(z) $NUMBER1 is greater than $NUMBER2."
else
if [ "$NUMBER2" -gt "$NUMBER1" ] ; then
echo "A(z) $NUMBER2 is greater than $NUMBER1."
else
echo "Equal numbers."
fi
fi
- Extend the previous task by creating a detailed log entry of events that occurred during the run in the "~ /events.log" file so that each run generates its own content, overwriting previous logging results.
#!/bin/bash
# Created by Magyar Péter
echo "Logging starts." > ~/events.log
echo -n "First number:"
read A
echo "First number = $A" >> ~/events.log
echo -n "Second number:"
read B
echo "Second number = $B" >> ~/events.log
if [ "$A" -gt "$B" ] ; then
echo "A(z) $A is greater than $B."
echo "A(z) $A is greater than $B." >> ~/events.log
else
if [ "$B" -gt "$A" ] ; then
echo "A(z) $B is greater than $A."
echo "A(z) $B is greater than $A." >> ~/events.log
else
echo "Equal numbers."
echo "Equal numbers." >> ~/events.log
fi
fi
echo "End of run." >> ~/events.log
- Create a program that asks for the serial number of a day of the week and prints the name of the corresponding day!
#!/bin/bash
echo -n "Number of the day: "
read N
case $N in
1) echo "Monday" ;;
2) echo "Tuesday" ;;
3) echo "Wednesday" ;;
4) echo "Thursday" ;;
5) echo "Friday" ;;
6) echo "Saturday" ;;
7) echo "Sunday" ;;
*) echo "Invalid day." ;;
esac
- Create a program that asks for the size of the sides of a rectangle and prints its area. The program must check if the specified page lengths are greater than 0.
#!/bin/bash
echo -n "Length of A: "
read A
echo -n "Length of B: "
read B
if [ "$A" -gt 0 -a "$B" -gt 0 ]
then
echo "Area: " ` expr $A \* $B ` "."
else
echo "Invalid side lengths."
fi
- Create a program that checks if the root user is running it, if not, give an error message!
#!/bin/bash
if [ $USER != "root" ] ; then
echo "You are not the system administrator."
exit
fi
echo "You are the system administrator."
- Create a program that displays the greeting according to the time of day based on the current time!
#!/bin/bash
HOUR=`date '+%H'`
N="night"
if [ $HOUR -ge 5 -a $HOUR -lt 12 ] ; then
N="morning"
fi
if [ $HOUR -ge 12 -a $HOUR -lt 18 ] ; then
N="afternoon"
fi
if [ $HOUR -ge 18 -o $HOUT -lt 5 ] ; then
N="night"
fi
echo "It is $HOUR o\' clock! Good $N!"
- Create a program that asks for a user's login name and looks up its full name in the /etc/passwd file! The program will check if the user has actually given a name to search for and give a meaningful answer even if the user you are looking for is not in the system!
#!/bin/bash
echo -n "Login name: "
read NAME
if [ -z "$NAME" ] ; then
echo "Missing login name."
exit
fi
FULLNAME=`cat /etc/passwd | grep ^$NAME: | cut -d: -f5`
if [ ! -z "$FULLNAME" ] ; then
echo "Full name: $FULLNAME"
else
echo "There is no user with name: $NAME."
fi
Error handling
Kivonat: $?
- Create a program that creates a directory called /tmp/testDir. Do not display any error messages, but if the directory creation fails, write your own error message.
#!/bin/bash
# Errors should be redirected to /dev/null
mkdir /etc/alma 2>/dev/null
# The return value is in the variable named ERR
ERR=$?
if [ $ERR -ne 0 ] ; then
echo "Error creating directory: $ERR"
fi
Command Line Parameters
Paraméterek
Kivonat: $0, $#, $@, exit, shift
- Készíts programot parmstest néven, mely kiírja saját nevét, paramétereinek számát, a paraméterek listáját, és a paramétereket egyenként! (Példa a kipróbálásra: ./parmstest alma körte dió)
#!/bin/bash
echo "Az elindított program neve: $0"
echo "Paraméterek száma: $#"
echo "Paraméterlista: $@"
echo "Paraméterek egyenként: "
for I in $@ ; do
echo $I
done
- Készíts programrészt, mely két paramétert vár. Amennyiben a programot nem két paraméterrel hívjuk meg, adjon hibaüzenetet!
#!/bin/bash
if [ $# -ne 2 ]
then
echo "A program hasznalata: $0 param1 param2"
exit
fi
- Készíts programot, mely 10-nél több paramétert is képes sorban megjeleníteni! Tehát a sokParameter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 eredménye mind a 14 paraméter megjelenítése legyen a válasz! (Ne feledje, a paraméterek csak $9-ig érhetők el!)
#!/bin/bash
for I in $@ ;do
echo $I
done
- Oldja meg az előző feladatot úgy, hogy egy paraméter feldolgozása után a további paramétereket a shift paranccsal rotálva éri el!
#!/bin/bash
while [ "$1" != "" ] ; do
echo -n "$1 "
shift
done
- Készíts programot parmtest néven, mely paraméterként két paramétert vár, egy kezdő- és egy végértéket, melyek közül bármelyik elhagyható. A program dologozza fel a két paramétert úgy, hogy azok tetszőleges sorrendben legyenek megadhatók a következő formában: parmtest -v vegertek -k kezdoertek (tehát a parmtest -k kezdoertek -v vegertek is helyes megadási forma). A feldogozás végén a script a kezdőértéket K-ba, a végértéket V-be tegye, és jelenítse meg e két adatot!
#!/bin/bash
# Kezdőérték és végérték default értékének beállítása
K="Nincs megadva"
V="Nincs megadva"
I=$1
while [ "$I" != "" ]
do
case $I in
-v | --veg )
shift
V=$1
;;
-k | --kezdet )
shift
K=$1
;;
*) echo "Érvénytelen paraméter. A program használata: $0 [-v kezdet] [-k vég]"
exit 1
;;
esac
shift
I=$1
done
echo "Kezdőérték=$K, végérték=$V"
|