Portál AbcLinuxu, 5. listopadu 2025 11:21
1 pokud je v proměnné AAA první znak "S" tak ho potřebuji smazat a nastavit proměnnou S="true" 2 pokud je v proměnné AAA poslední znak "E" tak ho potřebuji smazat a nastavit proměnnou E="true" if [ "???" = "S" ]; then S="true"; delete znak S; fi if [ "???" = "E" ]; then E="true" delete znak E; fi
Řešení dotazu:
"${proměnná:0:1}"
delete znak je proměnná="${proměnná:1}"
proměnná=${proměnná:0:${#proměnná}-1}
to odstraňování by možná bylo přehlednější pomocí expansních operátorů % a #, ale nezaškodí procvičit si občas klasickou práci s řetězci...
${proměnná:${#proměnná}-1}
if [ "${AAA#${AAA%?}}" = "E" ]; then
E="true";
fi
Výše uvedené
if [ "${AAA:0:${#AAA}-1}" = "E" ]; then
E="true";
fi
není vhodné, může-li být AAA prázdný řetězec tedy AAA=''
#!/bin/bash
#1st input argument
AAA="$1"
S='false'
E='false'
if [ "${AAA:0:1}" = "S" ]; then
S="true";
AAA="${AAA:1}"
fi
if [ "${AAA#${AAA%?}}" = "E" ]; then
E="true";
AAA="${AAA%?}"
fi
echo "E = '$E'"
echo "S = '$S'"
echo "AAA = '$AAA'"
exit 0
S= E=
TEST="${AAA#S}"
[ "$TEST" = "$AAA" ] || S="true"
AAA="$TEST"
TEST="${AAA%E}"
[ "$TEST" = "$AAA" ] || E="true"
AAA="$TEST"
if [[ $AAA = S* ]]; then
S=true
AAA="${AAA#S}"
fi
if [[ $AAA = *E ]]; then
E=true
AAA="${AAA%E}"
fi
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.