Tak ještě řeším toto:
1) nefunguje mi to nahrazení pomocí regulárního výrazu
2) ta proměnná $replaced je přístupná pouze uvnitř cyklu while ... do ... done; Ale za tím cyklem už přístupná není. Tohle neumím vyřešit...
# EDITACE SOUBORU /etc/fstab
n=0;echo "Vyber radek k editaci:"; read number; clear; echo -e "Vybral si radek:";
number=$number; # pokud to neulozim tak se promenna pri dalsim read vymaze
grep $e /etc/fstab | while read line; do
let "n += 1";
if [ "$n" == "$number" ]; then # POCET OD NULY
echo "$line" | awk '{print $1," \033[1;32m",$2,"\033[1;36m", $3, "\033[1;0m", $4, $5}';
#awk -v w="$line" '{print w}'# dostat promennou do awk
id_=`echo $line | awk '{print $1"\\\\W*"}'` # stara hodnota - dostat promennou z awk do bashe
dir_=`echo $line | awk '{print $2"\\\\W*"}'` # stara hodnota - dostat promennou z awk do bashe
fs_=`echo $line | awk '{print $3"\\\\W*"}'` # stara hodnota - dostat promennou z awk do bashe
zbytek_=`echo $line | awk '{print $4"\\\\W*"$5"\\\\W*"$6}'` # stara hodnota - dostat promennou z awk do bashe
pattern="$id_$dir_$fs_$zbytek_"; echo $pattern; read
if [ "$dir_" == "/" ]; then escape=1; echo "Bod / pro pripojeni systemoveho oddilu neni povoleno nastavit."; fi;
if [ "$dir_" == "/home" ]; then escape=1; echo "Bod /home neni povoleno nastavit."; fi;
if [ "$dir_" == "swap" ]; then escape=1; echo "Oddil swap neni povoleno nastavit."; fi;
replaced=${line//pattern/"tak toto je prepsana radka"};
echo $replaced"\n";
echo $pattern; read
fi;
done
echo $replaced"\n";
echo $pattern; read
if [ "$escape" != "1" ]; then # pokud vybral / nebo /home, neaplikovat
Možná to dělám moc složitě, ale i tak bych to chtěl vyřešit. Když tak bych pak zkusil udelat to pomocí selectu, tím by odpadl problém s tou proměnnou mimo cyklus.