Создание раздела подкачки с помощью lvm

Добро пожаловать в мир цитирования и цитирования сюрпризов.

Основная проблема заключается в том, что zsh по умолчанию не разбивается на символы IFS.
В этом: он отличается от всех других оболочек.

Чтобы проверить, как цитирование меняет способ работы оболочки, нам нужен код, который проверяет как цитируемые, так и некотируемые версии вашего кода.

Ваш код (добавление пары переменных):

program() { printf '%02d-1: %6s   2: %6s    3: %6s' "$i" "$1" "$2" "$3"; }
runa()  { program  "$@" ; }
run1()  { echo "`runa  $1 $2 $3 `"; }
run1    'a b' c

Позвольте мне остановиться на деталях.

Предположим, вы создали локальную ссылку sh , указывающую на место, где находится zsh :

ln -s "/usr/bin/zsh" ./sh

А также предположим, что вы скопировали следующий сценарий в , поэтому файл.

Сценарий, повторяющий каждую функцию с переменными в кавычках и без кавычек:

program() { printf '%02d-1: %6s   2: %6s    3: %6s' "$i" "$1" "$2" "$3"; }
runa() { program "$@"; }
runb() { program  $@ ; }

run1() { echo "`runa  "$1" "$2" "$3"`"; }
run2() { echo "`runb  "$1" "$2" "$3"`"; }
run3() { echo "`runa  $1 $2 $3`"; }
run4() { echo "`runb  $1 $2 $3`"; }

for i in `seq 4`; do
    run"$i" 'a b' c
done

Затем, при выполнении, мы получаем следующее:

# Any shell (except zsh) results.
01-1:    a b   2:      c    3:
02-1:      a   2:      b    3:      c
03-1:      a   2:      b    3:      c
04-1:      a   2:      b    3:      c

Только первый прогон (run1), где все заключено в кавычки, сохраняет 'a b ' присоединился.

Однако zsh действует так, как будто все цитируются все время:

# ZSH results.
01-1:    a b   2:      c    3:
02-1:    a b   2:      c    3:
03-1:    a b   2:      c    3:
04-1:    a b   2:      c    3:

zsh в эмуляции.

Предполагается, что zsh будет эмулировать старые оболочки, если они будут называться sh или ksh .
Но на практике это не всегда верно:

$ ./sh ./so   # emulated sh
01-1:    a b   2:      c    3:
02-1:    a b   2:      c    3:
03-1:      a   2:      b    3:      c
04-1:      a   2:      b    3:      c

Вторая строка отличается от второй строки для любой другой оболочки.

Рекомендуется прочитать ответы на этот вопрос

2
13.04.2016, 00:57
0 ответов

Теги

Похожие вопросы