Portál AbcLinuxu, 31. října 2025 00:39
./blabla ~/Pictures/kittens/lol.jpg
./blabla ~/Music/lol/Katrin.jpg
./blabla ~/Pictures/kittens/ #by mi mel otevrit lol.jpg
#ALE
./blabla ~/Pictures/ #neudela nic
#############################################################
Obsah historie.txt:
~/Pictures/kittens/lol.jpg
~/Music/lol/Katrin.jpg
#!/bin/bash
if test "${1:$((${#1}-1))}" = "/"; then
declare -A last
while read line; do
dname=${line%/*}/
fname=${line##*/}
last[${dname}]=${fname}
done < historie.txt
if test -n "${last[${1}]}"; then
myfile=$1/${last[${1}]}
else
#neudela nic
exit 0
fi
else
myfile=${1}
fi
echo ${myfile}
Jestli je účelné čistě v bashi je jiná otázka. :)
A pak ještě pozor. V té ukázce si ukládáte adresáře s tildou, ale pokud budete volat ./blabla ~/Pictures/kittens/, tak ve ${1} už to bude expandované. A pokud to zavoláte ./blabla '~/Pictures/kittens/', tak si tu tildu budete muset nahrazovat sám.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.