Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: C++odeG++irl-o.cc 09 Dubna 2011, 00:04:12
-
#!/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?
-
je mozne pouzit neco ve stylu
cmd1 && cmd2 || cmd3
ALE
http://mywiki.wooledge.org/BashPitfalls#cmd1_.26.26_cmd2_.7C.7C_cmd3
-
[ $odpoved == "y" ] && chmod u+rw $soubor || exit 1 Zkoušela jsem to už takhle napsat, ale pořád jsem tam dávala kulaté závorky, pomohlo mi to :) Díky.