poniedziałek, 11 września 2017

Bash: manipulowanie zmiennymi i stringami przy pomocy echo i printf

Kolejna niby oczywista rzecz, ale regularnie trafiam na skrypty, w których mam coś do poprawienia z  tego powodu. Poniżej załączam samowyjaśniajacy się przykład, gdy część stringu staje się nazwą zmiennej:

#!/bin/sh
# Script takes two arguments. Issue it the following way:
# ./strings.sh Test1 Test2

echo "\$1 contains: $1, \$2 contains: $2"
echo

echo "# Manipulating with echo #"
echo "\$1 with glued suffix: $1_New, \$2 with glued suffix: $(echo $2)_New"

STRINGNAMEFIRST=$1; STRINGNAMESECOND=$2
echo "Gluing to \$STRINGNAMEFIRST: $STRINGNAMEFIRST_New
fails; Gluing to \$STRINGNAMESECOND: $(echo $STRINGNAMESECOND)_New"

printf "\n# Now with printf #\n"
printf "A better \$1: %s; and a better \$2: %s\n" $1 $2
printf "\n# And now gluing #\n"
printf "Gluing to \$1: %s_New; and gluing to \$2: %s_New\n" $1 $2
printf "Gluing to \$STRINGNAMEFIRST: %s_New; and gluing to \$STRINGNAMESECOND: %s_New\n" $STRINGNAMEFIRST $STRINGNAMESECOND

I efekt wywołania: