set и сепаратор

Здесь можно сообщить о найденных багах в Far.
Post Reply
lvmm
Posts: 6
Joined: Thu 15 Apr, 2021 14:31
Has thanked: 1 time
Been thanked: 1 time

set и сепаратор

Post by lvmm »

С одной стороны, рука не поднимается назвать багом, с другой... В общем, попробуйте выполнить две команды

Code: Select all

set a=1 & dir
echo %a%
в командной строке фара.
2useven10
Posts: 4303
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 218 times

set и сепаратор

Post by 2useven10 »

Круто получилось. Не знал о такой возможности.

А вообще здесь явное противоречие...
Введённые команды либо отдаются внешнему интерпретатору,
который не встроен в фар, каждый раз запускается новая копия.
Поэтому переменная назначенная в первой команде не может быть использована во второй.
Либо их выполнение эмулируется самим фаром, команду set фар 'знает' а dir нет.

Чтобы отключить исполнение команд фаром достаточно добавить пробел в начало строки.
Но результат скорее всего тоже не устроит.

То как работает сейчас для меня неожиданность. Даже не знаю кто-то намеренно так делал или само вышло.
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

set и сепаратор

Post by Shmuel »

2useven10 wrote: Thu 10 Jun, 2021 08:40 Даже не знаю кто-то намеренно так делал или само вышло.
Конечно само вышло.
Фар установил переменную окружения a в значение 1 & dir.
Далее, команду echo он передал командному интерпретатору, который напечатал 1, а затем выполнил dir.
Last edited by Shmuel on Thu 10 Jun, 2021 08:59, edited 1 time in total.
2useven10
Posts: 4303
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 218 times

set и сепаратор

Post by 2useven10 »

Shmuel, ну не совсем так.
результат выполнения echo 1 & dir и echo 1 && dir одинаков.
Shmuel
Posts: 6304
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 386 times

set и сепаратор

Post by Shmuel »

2useven10, вы ответили на первоначальную версию моего сообщения. Разве движок форума не предупреждает, что сообщение было отредактировано?
2useven10
Posts: 4303
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 218 times

set и сепаратор

Post by 2useven10 »

Предупреждает, но почему-то не всегда.
User avatar
DrKnS
Posts: 5889
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 363 times

set и сепаратор

Post by DrKnS »

А что вас удивляет?
Да, far исполняет те команды, которые бессмысленно передавать в интерпретатор, самостоятельно.
Нет, там не поддерживаются конвейеры и прочее, поэтому set a=1 & dir - это присвоить переменной "a" значение "1 & dir", а cd foo && echo bar - это перейти в папку "foo && echo bar" и так было всегда.
2useven10
Posts: 4303
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 218 times

set и сепаратор

Post by 2useven10 »

DrKnS wrote: Thu 10 Jun, 2021 09:29так было всегда.
В коде до сих пор есть проверка на наличие во введённой строке конвейерных символов |&>,
и мне кажется был момент, когда строки с ними отдавались внешнему интерпретатору.
Как их наличие обрабатывается сейчас не знаю, вообще код исполнятора менялся часто и радикально.
User avatar
DrKnS
Posts: 5889
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 363 times

set и сепаратор

Post by DrKnS »

В коде до сих пор есть проверка на наличие во введённой строке конвейерных символов |&>, и мне кажется был момент, когда строки с ними отдавались внешнему интерпретатору.
Eсть. Отдаются.
Но не те, которые обрабатываются самостоятельно.

Post Reply

Return to “Глюки и баги”