hier ist das Skript, das ichRohrleitungen bash Eingabeargumente in egrep regulären Ausdruck
#!/bin/bash
charlist=$1 #possible input:cat
wordlength=$2 #possible input: 3
cat ./nounlist | egrep \b[${charlist}]\b{${wordlength}}
Ausgang zu laufen versuchen. Nichts # sollte die folgende (mit der Befehlszeile) habe gefangen
$ cat nounlist | egrep "\b[cat]{3}\b"
act
cat's_cradle
cat
cat-o'-nine-tails
cat's-paw
Sno-cat
act
act
act
act
rat-a-tat-tat
cat
cat's-claw
cat's_foot
cat's-ear
cat's-tail
cat's-ear
cat's_eye
im Grunde versuche ich ein Skript zu schreiben, das zwei Argumente (Wortliste, Wortlänge) nimmt und alle Wörter in der Nomenliste abruft, die aus dem Zeichen in der Wortliste bestehen und die Länge der Wortlänge haben. Was ich wissen möchte, ist, wie man Bash-Variablen in den regulären Ausdruck von egrep als Strings einfügt.
Danke!
Vielen Dank für Ihre Antwort! nur aus Neugier, haben Bash-Variablen Vorrang für alle Programme in der Bash-Skript? Mit anderen Worten, wie stellen Sie sicher, dass $ {variable} Bash-Variable ist? und was ist mit dem umgekehrten? sagen Sie haben $ 1 im regulären Ausdruck für sed im Bash-Skript? Ich war schon immer neugierig darauf. – Alby
@Alby: Bash wird '$ {variable}' expandieren, wenn es überhaupt nicht zitiert wird (zB 'echo $ {variable}') oder wenn es nur in doppelten Anführungszeichen steht (zB 'echo "$ {variable}" '). Es wird * nicht * expandieren '$ {variable}', wenn es durch einen umgekehrten Schrägstrich (zB 'echo \ $ {variable}' oder 'echo" \ $ {variable} "') oder durch einfache Anführungszeichen (zB 'echo ' $ {variable} ''). Aus diesen und verwandten Gründen, wenn Sie ein "sed" one-liner - oder "awk" one-liner oder 'perl' one-liner schreiben oder was auch immer - möchten Sie es normalerweise in einfache Anführungszeichen verpacken, um minimieren Bashs Interferenz damit. – ruakh