Zmienna łańcuchowa z odstępami jako parametr polecenia w skrypcie powłoki


1

Jak mogę przechowywać odstępy w zmiennej i używać go jako parametru polecenia w skrypcie powłoki?

Oto co próbuję zrobić:

DESTINATION='/mnt/External Harddisk'
FILE_NAME=$DESTINATION/home.tar.gz
INCREMENTAL=$DESTINATION/home.snar

tar -zcvpf $FILE_NAME \
--directory=/home \
--listed-incremental=$INCREMENTAL \
--exclude=.gvfs \
--exclude=.cache* \
--exclude=*/[Cc]ache* \
--exclude=.thumbnails* \
--exclude=*/[Tt]rash* \
--exclude=*~ \
--exclude=.dropbox* \
--exclude=*.vdi \
--exclude=*VirtualBox*VMs* \
.

Odpowiedzi:


2

ta odpowiedź może to obejmować Spacje w zmiennych środowiskowych systemu Linux?

Umieszczasz zmienną środowiskową w podwójnych cudzysłowach. przykład pokazujący to poniżej

Robię, ls 'asdf asdf'co jest na jednym pliku „adsf asdf” ze spacją w nazwie pliku. Chcę to zrobić ze zmienną. Widzisz z podwójnymi cudzysłowami, to dostaje wynik. Bez cudzysłowów traktuje to miejsce jako specjalne i dwukrotnie szuka pliku asdf. I z pojedynczymi cudzysłowami ls '$f'szuka dosłownego dolara f. Ale przy podwójnych cudzysłowach ls "$f"to działa, tzn. Daje taki sam wynik jak ls 'asdf asdf'.

$ ls 'asdf asdf' <ENTER>
ls: cannot access asdf asdf: No such file or directory

$ export f='asdf asdf' <ENTER>

$ echo $f <ENTER>
asdf asdf

$ ls $f <ENTER>
ls: cannot access asdf: No such file or directory
ls: cannot access asdf: No such file or directory

$ echo $f <ENTER>
asdf asdf

$ ls '$f' <ENTER>
ls: cannot access $f: No such file or directory


$ ls "$f" <ENTER>
ls: cannot access asdf asdf: No such file or directory

-1

Dodaj dowolny znak spacji za pomocą ciągu Escape, aby spacja była w ciągu jako „\” (ukośnik + spacja). Mam nadzieję, że to pomoże.


1
co masz na myśli? lubię to? nie działa pastebin.com/raw.php?i=bCa90GYe
barlop

1
Powłoka analizuje cytaty i znaki ucieczki przed podstawieniem zmiennych, więc umieszczanie cudzysłowów i / lub znaków ucieczki w wartościach zmiennych nic nie robi. Musisz umieścić cudzysłowy wokół odwołania do zmiennej.
Gordon Davisson,

Przeczytaj uważnie pytanie ponownie. Twoja odpowiedź nie odpowiada na pierwotne pytanie.
DavidPostill

Podaj przykład i przetestuj go. Możesz nawet spróbować i przekonać się, że to nie działa.
barlop
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.