#!/bin/bash
#====================================================================================
# Mistrovství v Linuxu - Příkazový řádek, shell, programování str.513 cv.1
#====================================================================================
#Preřepište skript deník v kap. 8 (otázka 5, str. 338) a přidejte do něj příkazy,
#které zkontrolují, že uživatel má oprávnění zapisovat do souboru denik-soubor ve
#svém domovském adresáři (pokud takový soubor existuje a uživatel k němu nemá právo
#zápisu. Ověřte, že upravený skript funguje.
#====================================================================================
#str. 338. otázka 5.
#====================
#Následující skript shellu přidá do souboru denik-soubor ve vašem domovském
#adresáři několik položek. Skript pomáhá uživateli udržet si přehled o telefonních
#hovorech a plánovaných schůzkách.
#====================
# cat denik
# #denik: přidá položky deníku
# #do souboru $HOME/denik-soubor
# file=$HOME/denik-soubor
# date >> $soubor
# echo -n "Zadejte název osoby nebo skupiny: "
# read name
# echo $name >> $soubor
# cat >> $soubor
# echo "........................................................." >> $soubor
# echo >> $soubor
#====================
#denik: přidá položky deníku
#do souboru $HOME/denik-soubor
soubor=$HOME/denik-soubor # "file=$HOME/denik/denik-soubor" je předpokládám chyba v knížce - zapomenutý překlad
if [ ! -f $soubor ]; then
read -p "Soubor $soubor nebyl nalezen. Chcete tento soubor vytvořit ve vašem domovském adresáři? [ y/n ]: " odpoved
if [ $odpoved == "y" ]; then
cat > $soubor < /dev/null
else
exit 1;
fi
fi
if [ ! -w $soubor -o ! -r $soubor ]; then
echo "Tento skript potřebuje pro správnou činnost přístupová práva ke čtení pro zápis do souboru $soubor."
read -p "Chcete pro Vás tato oprávnění skriptu přidělit? [ y/n ]: " odpoved
# ($odpoved == "y")? chmod u+wr $soubor : exit 1
if [ $odpoved == "y" ]; then
chmod u+rw $soubor
else
exit 1;
fi
fi
date >> $soubor
echo -n "Zadejte název osoby nebo skupiny: "
read name
echo "$name" >> $soubor
cat >> $soubor
echo "........................................................." >> $soubor
echo >> $soubor
Chci se zeptat jestli můžu napsat místo
if [ $odpoved == "y" ]; then
chmod u+rw $soubor
else
exit 1;
fi
něco ve stylu ternálního operátoru jako třeba v C++? nějakou zmínku o ternálním operátoru jsem našla, ale nejsem si jistá jestli to v tomto případě můžu použít a pokud ano tak netuším jak. ($odpoved == "y")? chmod u+wr $soubor : exit 1
Připadá mi to takhle docela nepřehledné, hlavně když píšu něco delšího. Jen by mne zajímalo jestli je to úplná blbost nebo by to nějak šlo udělat jinak na jeden řádek.
Nebo jediné co můžu udělat je, že oddělím ten if středníky a budu to mít takhle na jednom řádku?