/ / Каква је разлика између појединачних и двоструких наводника у шкољци бас-а?

Која је разлика између појединачних и двоструких наводника у басовској шкољци?

Укључивање текста у наводнике је приличностандардна пракса у командној линији, посебно када се ради са датотекама које имају размаке у именима, али како знати да ли користити појединачне или двоструке наводнике? Погледајмо разлику и када бисте требали да користите једно насупрот другом.

Опште правило је да дупли цитати и даље омогућавају ширење променљивих унутар цитата, а појединачни наводници не. Настави да читаш.

Цитати са једноставним текстом

Ако једноставно приложите неколико речи текста,заиста није важно који ћете користити јер ће оба радити потпуно исто. На пример, ове две команде ће креирати директоријум који се зове Тест Дирецтори:

mkdir "Test Directory"
mkdir 'Test Directory'

Искуснији типови ће вероватно приметити да такође можете користити мкдир Тест Дирецтори ако желите.

Схелл Вариабле Ектенсион

Разлика између појединачних и двоструких цитатапостаје важније када радите са променљивим у командној линији - подразумевано ће басх проширити променљиву попут $ тест у цео низ. Прво ћемо доделити променљиву:

test="This is a test"

Сада можете да користите ову променљиву у командној линији, попут ове, која би једноставно требало да се произведе Ово је тест до конзоле:

echo $test

Ево где разлика између двоструких и појединачних навода постаје јаснија - када користите појединачне наводнике, променљиве се неће проширити. На пример, ако покренете ову наредбу:

echo '$test'

У командној линији нећете видети ништа осим „$ тест“ када користите појединачне наводнике, али он ће се приказати правилно када користите двоструке наводнике:

слика

Иста ствар функционише када помоћу знака `проширите наредбу у командној линији. На пример, реците да сте желели да употребите пвд наредба из друге наредбе - користићете позадинске везе да бисте рекли шкољци да је проширите:

echo `pwd`/test

Да сте били у својој матичној мапи видели бисте излаз који је изгледао овако:

/ хоме / геек / тест

Рецимо, на пример, да сте у фасцикли која имаразмака на путу и ​​желите да користите наредбу лн да направите симболичку везу до датотеке у тренутном директорију. Обично морате да одредите пуни пут приликом коришћења команде лн, тако да је много лакше употребити `пвд` за спремање куцања.

Погледајте шта се догађа када покушате и користите наредбу без затварања у наводнике:

ln –s `pwd`/test /home/geek/linkedname

слика

Уместо тога, мораћете да окружите цитате:

ln –s "`pwd`/filename" /some/other/path

За конкретнији пример, претпоставимо да имамо структуру мапе као овај пример, где сва имена датотека имају размаке у њима:

слика

Будући да наредба унзип не подржава коришћење * да бисте је покренули са свим датотекама, морат ћете уместо ње употребити наредбу. Ево где ствари постају занимљиве:

for f in *.zip;do unzip $f;done

Упс! Изгледа да то није успјело.

слика

Оно што ћемо уместо тога требати је да користимо двоструке наводнике око $ ф променљиве, као што је овај:

for f in *.zip;do unzip "$f";done

Сада сваки пут када наредба фор прође кроз петљу, заправо ће покренути наредбу попут ове:

unzip "test 1.zip"

Наравно, пробиће се и изврши слична наредба за сваку датотеку у директорију.

Хајде да размотри

Сада када смо прошли кроз примере, брзо ћемо прегледати случај да сте га пропустили:

Доубле Куотес

  • Користите када желите да приложите променљиве или користите проширење љуске унутар низа.
  • Сви знакови унутар тумаче се као регуларни знакови, осим $ или `који ће се проширити на љусци.

Сингле Куотес

  • Сви знакови у оквиру појединачних навода тумаче се као низови.

И тиме се завршава лекција цитата. Користите их мудро.