RFC: Bash quiz: $1 gleiche Zeichen $2
Auf der Suche nach $1 gleichen Zeichen $2 hatte ich ursprünglich folgenden Code:
ruler () { # count char
local i
for ((i=0;i<$1;i++))
do
echo -n "${2:-=}"
done
}
Daraus ist dann irgendwann folgendes entstanden:
ruler () { # count char
local _r="${2:-=}"
while [ "${#_r}" -lt "$1" ]
do
_r="${_r}${_r}"
done
_r="${_r//?/${2:-=}}"
echo "${_r:0:$1}"
}
Oder doch gleich Python:
ruler () { # count char
python -c 'import sys;print sys.argv[2] * int(sys.argv[1])' "$1" "${2:-=}"
}
Folgendes wollte leider nicht:
ruler () { # count char
seq -f"${2:-=}" "$1"
}
Aber folgendes funktioniert:
ruler () { # count char
local t
printf -v t '%*s' "$1"
echo "${t// /${2:-=}}"
}
Kennt ihr ggf. einfachere/bessere/effizientere Varianten?
PS: RFC steht hier für „Request for Competition“, um mal für zwischendurch oder beim Radfahren eine kleine Herausforderung für das eigene Hirn zu haben 😉
Written on September 28, 2011