Как выполнить вывод команды в текущей оболочке?

Инструменты>> Опции>> Текстовый редактор>> Все Языки>> Общий>> Избранный Переход на новую строку.

я не знаю, можно ли выбрать определенное число столбцов?

77
задан Mogsdad 17 August 2015 в 17:26
поделиться

5 ответов

$ ls | sed ... | source /dev/stdin

ОБНОВЛЕНИЕ: Это работает в bash 4.0, а также в tcsh и тире (если вы измените исходный код на . ). По-видимому, это было ошибкой в ​​bash 3.2. Из примечания к выпуску bash 4.0 :

Исправлена ​​ошибка, вызывающая `. ' чтобы не читать и выполнять команды из нестандартных файлов, таких как устройства или именованные каналы.

80
ответ дан 24 November 2019 в 10:44
поделиться

Для этой цели существует команда eval .

eval "$( ls | sed... )"

Еще из руководства bash :

eval

  eval [аргументы ]

Аргументы объединяются вместе в единую команду, которая затем читается и выполняется, а его статус выхода возвращен как выход статус eval. Если нет аргументы или только пустые аргументы, статус возврата равен 0.

117
ответ дан 24 November 2019 в 10:44
поделиться
`ls | sed ...`

Мне кажется, что ls | sed ... | источник - было бы красивее, но, к сожалению, источник не понимает - как значение stdin .

5
ответ дан 24 November 2019 в 10:44
поделиться

Думаю, ваше решение - подстановка команд с обратными кавычками: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html

См. Раздел 3.4 .5

1
ответ дан 24 November 2019 в 10:44
поделиться

Тогда почему бы не использовать исходный код ?

$ ls | sed ... > out.sh ; source out.sh
]
0
ответ дан 24 November 2019 в 10:44
поделиться