Задачи:
Да се напише bash shell script, който:
1) Приема име на файл и му добавя право за изпълнение. Ако няма такъв файл да изпише съобщение за грешка "No such file."
2) Приема от командния ред 2 числа, а ако не са подадени 2 числа като входни параметри, предлага на потребителя да ги въведе. Тези 2 числа са първите 2 числа на ред на Фибоначи, който скрипта трябва да генерира. Редът да е с размер 20 елемента. Генерираният ред да се запазва във файл: fib.txt.
#!/bin/bash
num_vh=$#
declare -i num1
declare -i num2
declare -a nums
#echo $num_vh
if [ $num_vh -le 1 ]; then
echo "enter first number";
read num1
echo "enter second number";
read num2
else
num1=$1
num2=$2
fi
nums[0]=$num1
nums[1]=$num2
echo "Fibonacci" > fib.txt
echo nums[0]=${nums[0]} >> fib.txt
echo nums[1]=${nums[1]} >> fib.txt
declare -i i=2
while [ $i -lt 20 ]; do
nums[$i]=$(( ${nums[(( $i - 1 ))]} + ${nums[(( $i - 2 ))]} ))
echo nums[$i]=${nums[$i]} >> fib.txt
i=$i+1
done
3) Приема от командния ред цяло число и проверява дали е четно или не. Ако е четно, изписва "1", ако е нечетно "0".
#!/bin/bash
if [ $(( $1 % 2 )) -eq 0 ]; then
echo "1"
else
echo "0"
fi
4) Приема от командния ред променлив брой числа и връща сумата им.
#!/bin/bash
declare -i sum=0
for num in $@
do
sum=$(( $sum + $num ))
done
echo $sum
5) Приема от командния ред имена на 2 файла. Проверява дали по съдържание са еднакви. Ако са еднакви, да изтрие втория.
#!/bin/bash
fc1=""
fc2=""
if [ $# -lt 2 ]; then
echo "not enough parameters"
exit 1
fi
if [ -e $1 ] && [ -e $2 ]; then
fc1=$( cat $1 )
fc2=$( cat $2 )
if [ $fc1 = $fc2 ]; then
echo '1'
rm $2
else
echo '0'
fi
else
echo "one of the files do not exist"
exit 2
fi
6) Приема от командния ред цяло число и връща неговия факториел.
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Not enough input parameters"
exit 1
fi
re='^[0-9]+$'
if ! [[ $1 =~ $re ]] ; then
echo "error: Not a number" >&2; exit 2
fi
declare -i fac=1
if [ $1 -eq 1 ]; then
echo $fac
exit 0
fi
for (( nnum=1; nnum <= $1 ; nnum=$(( $nnum+1 )) ))
do
fac=$(( $fac * $nnum ))
done
echo $fac
7) Генерира файл variations.txt, който съдържа всички пермутации с повторения на числата 1, 2, 3.
#!/bin/bash
for i in 1 2 3; do
for j in 1 2 3; do
for k in 1 2 3; do
echo [i, j, k]=[$i, $j, $k] >> variations.txt
done
done
done
fulltext