Homepage » hogyan kell » Mi a különbség az egy- és kétszemélyes idézetek között a Bash Shellben?

    Mi a különbség az egy- és kétszemélyes idézetek között a Bash Shellben?

    Az idézőjelek szövegének beillesztése a parancssorban meglehetősen általános gyakorlat, különösen akkor, ha olyan fájlokkal foglalkozik, amelyek szóközzel rendelkeznek a nevekben, de hogyan tudod, hogy egyszeres vagy kettős idézeteket használ? Vessünk egy pillantást a különbségre, és mikor használj egyet a másikra.

    Az általános szabály az, hogy a idézőjelek még mindig lehetővé teszik a változók bővítését az idézőjelek között, és az egyszeri idézetek nem. Olvass tovább.

    Idézetek egyszerű szöveggel

    Ha egyszerűen csak néhány szöveget csatol a szöveghez, akkor tényleg nem számít, hogy melyiket használja, mivel mindketten pontosan ugyanazok lesznek. Ezek a két parancs például egy tesztkönyvtárat hoz létre:

    mkdir "Test Directory"
    mkdir 'Test Directory'

    A tapasztaltabb típusok valószínűleg figyelembe veszik, hogy az mkdir Test Directory-t is használhatja, ha azt szeretné.

    Shell változó bővítés

    Az egyszeres és kettős idézetek közötti különbség fontosabbá válik, ha a parancssori sorrendben a változókkal foglalkozik, a bash egy változót, például a $ testet bővíti a teljes karakterláncba. Először hozzárendeljük a változót:

    test = "Ez egy teszt"

    Most ezt a változót használhatja a parancssorban, mint ez, ami egyszerűen kimeneti Ez egy teszt a konzolhoz:

    echo $ teszt

    Itt van, ahol a kettős és az egyéni idézetek közötti különbség egyértelműbbé válik, amikor egyszeri idézeteket használ, a változók nem fognak bővülni. Ha például ezt a parancsot futtatja:

    echo '$ test'

    Egyetlen idézet használatakor a parancssori sorban csak a $ $ teszt jelenik meg, de kettős idézőjelek használatakor megfelelően fog megjelenni:

    Ugyanez működik, ha a parancsot a parancs használatával bővíti. Például mondjuk, hogy használni szeretnéd pwd parancs egy másik parancsból - a backticks használatával elmondhatja a shellnek, hogy bővítse:

    echo 'pwd' / teszt

    Ha az otthoni mappájában tartózkodott, akkor a következő kimenetet látta:

    / Home / stréber / teszt

    Mondjuk például, hogy egy mappában van, amely egy helyet tartalmaz az útvonalban, és az ln paranccsal szeretné létrehozni egy szimbolikus hivatkozást az aktuális könyvtárban lévő fájlhoz. Az ln parancs használatakor általában meg kell adnia a teljes elérési utat, így sokkal egyszerűbb a 'pwd' használata a gépelés mentéséhez..

    Nézze meg, mi történik, amikor megpróbálja használni a parancsot, idézőjelek nélkül:

    ln -s 'pwd' / teszt / home / geek / hivatkozott név

    Ehelyett idézetekben kell körülvennie:

    ln -s "" pwd '/ fájlnév "/ néhány / másik / elérési út

    Konkrétabb példa esetén tegyük fel, hogy van egy mappaszerkezet, mint ez a példa, ahol az összes fájlnév szóközzel rendelkezik:

    Mivel az unzip parancs nem támogatja a * használatát az összes fájl futtatásához, a for parancsot kell használnia. Itt van, ahol a dolgok érdekesek:

    az f-re * .zip-ben;

    Hoppá! Úgy tűnik, nem működött.

    Ahelyett, hogy ezt kell tennünk, a $ f változó körüli kettős idézeteket használja:

    az f-re * .zip-ben;

    Most minden alkalommal, amikor a parancs megkeresi a hurkot, valójában egy ilyen parancsot futtat:

    unzip "test 1.zip"

    Természetesen ez a hurok áthidalna és hasonló parancsot futtatna a könyvtár minden fájljára.

    Nézzük át

    Most, hogy végigmentünk a példákon, mi csak gyorsan megvizsgáljuk, ha hiányzott volna:

    Kettős idézetek

    • Használja, ha változókat szeretne csatolni vagy héjhosszabbítást szeretne használni egy karakterláncon belül.
    • Az összes karakter a szokásos karaktereként értelmezhető, kivéve a $ vagy a '' értékeket, amelyek a héjra kiterjednek.

    Egységes idézetek

    • Az egyes idézetekben szereplő összes karakter karakterláncként értelmezhető.

    És ezáltal befejezi az idézetek tanulságát. Használd bölcsen.