Portál AbcLinuxu, 10. května 2025 16:35
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"; fiVýše uvedené
if [ "${AAA:0:${#AAA}-1}" = "E" ]; then E="true"; finení 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.