Ошибка при выполнении команды «sed», использующей переменные оболочки

Просто используйте эту простую команду

sudo apt-get build-essential

Он автоматически исправит все отсутствующие пакеты.
Если эта команда не запущена, она автоматически спросит, что пакет отсутствует, и вам нужно установить этот пакет, а затем запустить эту команду

1
02.06.2021, 15:53
1 ответ

Основная проблема заключается в том, что вы заключаете все в подстановку команд в двойные -кавычки:

FILEDIR=$("ls -1t [dir]*.log | sed -n '$c p'")

Это будет указывать оболочке найти исполняемый файл с дословным именемls -1t [dir]*.log | sed -n '$c p'"и без аргументов, в отличие от выполнения команды lsс параметрами -1tи операндом [dir]*.log, вывод которой должен быть передается в исполняемый файл sedс параметром -nи аргументом '$c p'. Попробуйте убрать двойные -кавычки, как в

FILEDIR=$(ls -1t [dir]*.log | sed -n '$c p')

Однако тогда вы столкнетесь с проблемой, что раскрытие переменной отключено в вашей одиночной команде -в кавычках sed. Один рекомендуемый способ состоит в том, чтобы разорвать одинарные -кавычки и поместить переменную в двойное -междометие в кавычках, как в

FILEDIR=$(ls -1t [dir]*.log | sed -n "$c"' p')

Кроме того, я должен выдать обязательное предупреждение , чтобы не анализировать выводls. ;)

3
28.07.2021, 11:27

Теги

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