Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

OT - Wie bekomme ich den Hund in eine bash?

2 views
Skip to first unread message

Florian (flobee)

unread,
Feb 2, 2024, 8:00:05 PMFeb 2
to
Hallo

Sry für die vll. komische Betreffzeile aber die Suchmaschine findet zu
viel und zu wenig Antworten:

__ _,--="=--,_ __
/ \." .-. "./ !\
\ `| \O/ :_: \O/ |\__/
`-'| :="~` _ `~"=: |
.---{ }--| /,.-'-.,\ |--{ }---.
) (_)_)_) \_/`~-===-~`\_/ (_(_(_) (

Ein aus figlet und/oder boxes kopierter String liegt in einem shell
script, bash, vor.

Diesen string möchte ich zu gegebener Zeit hier oder dort ausgeben.
(interaktives script)
Nur die bash und das script stehen zu Verfügung.

Ich bekomme es nicht hin, diesen String in eine Variable zu packen, um
via echo $hund eine passende Ausgabe zu haben. Ein 'Banner', der
gezeigt werden will.

cat <<'BANNER' ... heredoc
funktioniert einmalig super

read -d '' BANNER <<'LONGSTRING'...
read -d ' ' BANNER <<'LONGSTRING'...
read -d '' BANNER <<-'LONGSTRING'...
Ich gehe kaputt. Alles irgendwie ein kaputter Sting.

banner:
__ _,--="=--,_ __
/ ." .-. "./ ! `| O/ :_: O/ |__/
`-'| :="~` _ `~"=: |
.---{ }--| /,.-'-., |--{ }---.
) (_)_)_) _/`~-===-~`_/ (_(_(_) (

oder, banner:
__ _,--="=--,_ __ / ." .-. "./ ! `| O/ :_: O/ |__/ `-'| :="~` _ `~"=:
| .---{ }--| /,.-'-., |--{ }---. ) (_)_)_) _/`~-===-~`_/ (_(_(_) (

Was muss man tun? Irgendwie finde ich nichts Passendes.

Ulf Volmer

unread,
Feb 3, 2024, 4:50:03 AMFeb 3
to
Am 03.02.24 um 01:57 schrieb Florian (flobee):
> Hallo
>
> Sry für die vll. komische Betreffzeile aber die Suchmaschine findet zu
> viel und zu wenig Antworten:
>
> __ _,--="=--,_ __
> / \." .-. "./ !\
> \ `| \O/ :_: \O/ |\__/
> `-'| :="~` _ `~"=: |
> .---{ }--| /,.-'-.,\ |--{ }---.
> ) (_)_)_) \_/`~-===-~`\_/ (_(_(_) (
>
> Ein aus figlet und/oder boxes kopierter String liegt in einem shell
> script, bash, vor.
>
> Diesen string möchte ich zu gegebener Zeit hier oder dort ausgeben.
> (interaktives script)
> Nur die bash und das script stehen zu Verfügung.
>
> Ich bekomme es nicht hin, diesen String in eine Variable zu packen, um
> via echo $hund eine passende Ausgabe zu haben. Ein 'Banner', der
> gezeigt werden will.

Spricht irgendwas gegen

echo "$(~/a.sh)"

Oder, wenn Du zwingend eine Variable haben möchtest:

a="$(~/a.sh)"

?

Viele Grüße
Ulf

Ulf Volmer

unread,
Feb 3, 2024, 3:30:04 PMFeb 3
to
Am 03.02.24 um 20:31 schrieb Florian (flobee):
> Am Sa., 3. Feb. 2024 um 10:47 Uhr schrieb Ulf Volmer <u.vo...@u-v.de>:
>> Spricht irgendwas gegen
>>
>> echo "$(~/a.sh)"
>>
>> Oder, wenn Du zwingend eine Variable haben möchtest:
>>
>> a="$(~/a.sh)"
>
> Dann brauche ich eine extra Datei. Genau das kann andere Probleme
> machen und sollte möglichst _nicht_ so sein.

Hach.

[ulf@p330 ~](0/0)$ cat ./b.sh
A="
__ __ __
_____/ /___ __ ______/ / __ __ _ __ ____/ /__
/ ___/ / __ \/ / / / __ / / / / /____| | / // __ / _ \
/ /__/ / /_/ / /_/ / /_/ /_/ /_/ /_____/ |/ // /_/ / __/
\___/_/\____/\__,_/\__,_/(_)__,_/ |___(_)__,_/\___/
"

echo "$A"

Viele Grüße
Ulf

Ulf Volmer

unread,
Feb 3, 2024, 4:10:06 PMFeb 3
to
Am 03.02.24 um 20:31 schrieb Florian (flobee):

> Dann brauche ich eine extra Datei. Genau das kann andere Probleme
> machen und sollte möglichst _nicht_ so sein.

Wenn Du ohne eine separate Datei auskommen willst, warst Du schon auf
dem richtigen Weg.

Hier tut:

A="$(cat << "LALA"
__ _,--="=--,_ __
/ \." .-. "./ \
/ ,/ _ : : _ \/` \
\ `| /o\ :_: /o\ |\__/
`-'| :="~` _ `~"=: |
\` (_) `/
.-"-. \ | / .-"-.
.---{ }--| /,.-'-.,\ |--{ }---.
) (_)_)_) \_/`~-===-~`\_/ (_(_(_) (
LALA
)"

Christian Brabandt

unread,
Feb 4, 2024, 12:10:05 PMFeb 4
to

Florian (flobee) schrieb am Samstag, den 03. Februar 2024:

> eg (funktioniert aber es sollte alles in eine Datei):
> # cat >$TMPFILE <<'LONGSTRING'
> ... special chars
> LONGSTRING

A="$(cat <<'EOF'
__ _,--="=--,_ __
/ \." .-. "./ \
/ ,/ _ : : _ \/` \
\ `| /o\ :_: /o\ |\__/
`-'| :="~` _ `~"=: |
\` (_) `/
.-"-. \ | / .-"-.
.---{ }--| /,.-'-.,\ |--{ }---.
) (_)_)_) \_/`~-===-~`\_/ (_(_(_) (
EOF
)"

printf "%s\n" "$A"

Sollte tun.


> In Anlage ein Beispiel.
> Muss ich wirklich alle Zeichen suchen und escapen? Geht das nicht einfacher? :-)
> boxes oder figlet sind auf dem Zielsystem nicht verfügbar und lassen
> weniger Individualisierungen ermöglichen.

read sollte auch gehen, dann musst du aber dafür sorgen, dass
word-splitting und backslash escapes nicht durchgeführt werden.

IFS= read -r -d '' BANNER <<'LONGSTRING'
[...]
LONGSTRING


Viele Grüße
Christian
--
*Optische Täuschungen II*

Welches Dreieck ist am dreieckigsten?

a) ein Dreieck c) ein Dreieck mit den Winkeln 60-55-65=180
b) ein anderes Dreieck d) ein Dreieck mit den Maßen 90-60-90
0 new messages