Итак, у меня есть крошечный тестовый скрипт, который ведет себя странно. Предполагалось, что это станет началом некоторых тестов, которые я хотел провести, но я даже не могу заставить этот базовый сценарий работать должным образом. Надеюсь, кто-нибудь сможет обнаружить проблему, потому что я пробовал много других способов сделать это, и все они приводят к одной и той же проблеме.
declare stdout_file=$(mktemp -u)
declare stderr_file=$(mktemp -u)
mkfifo "$stdout_file" "$stderr_file"
cleanup() {
rm "$stdout_file" "$stderr_file" &>/dev/null
}
trap cleanup EXIT
sed 's/\(.*\)/ \1/' < "$stdout_file" &
sed 's/\(.*\)/ \1/' < "$stderr_file" >&2 &
fnc1() {
echo "Executing function"
}
echo "Running test"
fnc1 > $stdout_file 2> $stderr_file
echo "Done"
Я получаю различные результаты, просто выполняя скрипт несколько раз. Ничто из этого, как ни странно, не верно.
$ bash test.sh
Running test
Done
Executing function
$ bash test.sh
Running test
Done
$ Executing function
Да, в последнем примере он фактически заменил введенную мной команду выводом сценария.
Я каждый раз ожидал одного и того же результата что должно было быть
$ bash test.sh
Running test
Executing function
Done
Подробнее здесь: https://stackoverflow.com/questions/783 ... es-in-bash
Проблемы с перенаправлением в bash ⇐ Linux
1713525911
Anonymous
Итак, у меня есть крошечный тестовый скрипт, который ведет себя странно. Предполагалось, что это станет началом некоторых тестов, которые я хотел провести, но я даже не могу заставить этот базовый сценарий работать должным образом. Надеюсь, кто-нибудь сможет обнаружить проблему, потому что я пробовал много других способов сделать это, и все они приводят к одной и той же проблеме.
declare stdout_file=$(mktemp -u)
declare stderr_file=$(mktemp -u)
mkfifo "$stdout_file" "$stderr_file"
cleanup() {
rm "$stdout_file" "$stderr_file" &>/dev/null
}
trap cleanup EXIT
sed 's/\(.*\)/ \1/' < "$stdout_file" &
sed 's/\(.*\)/ \1/' < "$stderr_file" >&2 &
fnc1() {
echo "Executing function"
}
echo "Running test"
fnc1 > $stdout_file 2> $stderr_file
echo "Done"
Я получаю различные результаты, просто выполняя скрипт несколько раз. Ничто из этого, как ни странно, не верно.
$ bash test.sh
Running test
Done
Executing function
$ bash test.sh
Running test
Done
$ Executing function
Да, в последнем примере он фактически заменил введенную мной команду выводом сценария.
Я каждый раз ожидал одного и того же результата что должно было быть
$ bash test.sh
Running test
Executing function
Done
Подробнее здесь: [url]https://stackoverflow.com/questions/78353316/redirection-issues-in-bash[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия