Richard MacCutchan
Хорошо, продолжу с моего предыдущего сообщения:
1. "Да, я попробовал "перенаправление", но это не сработало, как ожидалось."
Это один из самых неприятных комментариев, которые мы видим в вопросе. Мы понятия не имеем, что вы ожидали увидеть или что произойдет. И мы понятия не имеем, что произошло. Без четкого объяснения того, что вы ожидали и какой результат получили, мы действительно не можем помочь.
2. вы смешиваете замену команд и перенаправление, поэтому неясно, что является большой проблемой. Перенаправление довольно простое, оно позволяет отправлять выходные данные команды в файл вместо консоли, чтобы вы могли прочитать их позже в своем редакторе. Он также позволяет отправлять содержимое файла в качестве входных данных для команды. Так что команда вроде:
ls -l > foo.txt
отправляет выходные данные из команды list в файл foo.txt-да. Вы также можете использовать трубу
|
чтобы отправить выходные данные из одной команды в качестве входных данных в другую. Таким образом
ls -l | grep "foo"
отправляет выходные данные команды ls в качестве входных данных в grep, который будет перечислять все файлы, содержащие строку 'foo'.
3. Что касается подстановки команд, то здесь используется конструкция
$(command)
который работает
command
и заменяет собой
$(command)
в скрипте с фактическим результатом выполнения команды. Так что в вашем заявлении выше
index=$(sed -n "/$choice/=" "$PWD$DEBUG_DIR$DEBUG_MENU")
вы устанавливаете локальную переменную
index
, к результату высказываний в скобках. Это не то же самое, что передать его в файл.
Vaclav_
Я попросил объяснить, когда использовать замену команд или перенаправление.
Поскольку все в Linux - это файл, я предполагаю, что могу "перенаправить" из stdout в переменную-в данном случае "индекс".
Я уточнил, что действительно пытался это сделать.
В конце концов я выясню, как это сделать.
Richard MacCutchan
И это то, что я дал тебе. Если вы хотите отправить свой вывод в файл, то вы используете перенаправление. Если вы хотите использовать выходные данные как часть составного оператора, то вы можете использовать подстановку команд. И все в Linux-это не файл; понятия не имею, откуда вы это взяли.
Как я уже упоминал выше, ваше заявление
index=$(sed -n "/$choice/=" "$PWD$DEBUG_DIR$DEBUG_MENU")
не создает файл, а создает локальную переменную окружения с именем index
который содержит результат выполнения команды в круглых скобках.