Sådan kalder du et Linux-program i bash med regulære udtryk uden fortolkning af specialtegn

Hvordan kan et Linux-program, der kræver en regulær udtryk som input, kaldes i bash-shell med regulære udtryk som kommandolinjeargumenter, uden at bash fortolker specialtegnene [, ], og |, og samtidig sikre, at hvert argument behandles separat?

For at kalde et Linux-program i bash-shell med regulære udtryk som kommandolinjeargumenter uden fortolkning af specialtegn, kan du bruge anførselstegn, escape specialtegn med backslash, eller bruge `--` for at indikere slutningen af kommandolinjeindstillinger.

Sådan kaldes et Linux-program i bash-shell med regulære udtryk som kommandolinjeargumenter uden fortolkning af specialtegn

For at kalde et Linux-program, der kræver regulære udtryk som input, i bash-shell uden at bash fortolker specialtegnene [, ], og |, og samtidig sikre, at hvert argument behandles separat, kan du følge disse trin:

  1. Brug anførselstegn: Indsæt regulære udtryk i enkelt- eller dobbeltanførselstegn for at forhindre bash i at fortolke specialtegnene.
    • Enkeltanførselstegn (') beskytter alle tegn indenfor mod fortolkning.
    • Dobbeltanførselstegn (") beskytter de fleste tegn, men tillader fortolkning af nogle specialtegn som $ og \.
  2. Escape specialtegn: Brug backslash (\) til at escape specialtegn, så de ikke fortolkes af bash.
    • Eksempel: \[ \] og \|
  3. Brug --: Nogle programmer accepterer -- for at indikere slutningen af kommandolinjeindstillinger, så efterfølgende argumenter behandles som almindelige argumenter.
    • Eksempel: program -- '[a-z]' '[0-9]'

Her er et eksempel på, hvordan du kan kalde et program med regulære udtryk som argumenter:

#!/bin/bash
program='my_program'
regex1='[a-z]'
regex2='[0-9]'
regex3='a|b'

# Kald programmet med regulære udtryk som argumenter
$program "$regex1" "$regex2" "$regex3"

Alternativt kan du bruge backslash til at escape specialtegnene:

#!/bin/bash
program='my_program'
regex1='\[a-z\]'
regex2='\[0-9\]'
regex3='a\|b'

# Kald programmet med regulære udtryk som argumenter
$program $regex1 $regex2 $regex3

Ved at følge disse metoder kan du sikre, at bash ikke fortolker specialtegnene i dine regulære udtryk, og at hvert argument behandles separat.