Bash szkriptben változók értelmezésének globális kikapcsolása

Kezdőlap Fórumok Programozás Bash szkriptben változók értelmezésének globális kikapcsolása

2 bejegyzés megtekintése - 1-2 / 2
  • Szerző
    Bejegyzés
  • #1889712
    Goosfrabaa
    Felhasználó

      Sziasztok!

      Az alábbi szkriptet Bash parancssorba gépelve helyesen jön létre az uj_file, ám ha fájlba írom, akkor végrehajtáskor sajnos rossz értékek kerülnek az uj_file nevű fájlba.

      #!/bin/bash
      cat << EOF > /tmp/uj_file
      # Megjegyzes..
      for daemon in „${DAEMONS[@]}”; do
      if [ „$daemon” = „${daemon#!}” ]; then
      if [ „$daemon” = „${daemon#@}” ]; then
      start_daemon $daemon
      else
      start_daemon_bkgd ${daemon:1}
      fi
      fi
      done
      EOF

      Világos, hogy mivel Bash az interpreter, „ő” értelmezi amit tud, ezért hibás az eredmény.
      Azon kívül, hogy escape karakterekkel védem amit lehet, létezik -e valami egyszerű megoldás (pl. kapcsoló), amivel globálisan tiltható a Bash ezen működése azaz, hogy semmit ne akarjon „értelmezni”?

      #2200520
      Goosfrabaa
      Felhasználó
        Goosfrabaa wrote:
        …létezik -e valami egyszerű megoldás (pl. kapcsoló), amivel globálisan tiltható a Bash ezen működése azaz, hogy semmit ne akarjon „értelmezni”?
        Ehh, most megvan a megoldás, pedig mennyit kerestem előtte…

        Szóval nem globális tiltás, de épp azt csinálja, amit akarok. A lényege, hogy a bevitel végét jelző szöveget (itt EOF) „”-el kell levédeni így:
        cat < /tmp/uj_file

      2 bejegyzés megtekintése - 1-2 / 2
      • Be kell jelentkezni a hozzászóláshoz.