Выдержка bash-скрипта ниже показывает базовый процесс egrep из большой системы меню, которую я написал, и выводит на терминал, а также пользовательский файл, имя которого хранится в переменной searchlog_bank. Хотя searchlog_bank действительно содержит имя файла, и я вижу вывод grep в терминале, файл не записывается в PWD. Выполнение этой же команды непосредственно в терминале, однако, приведет к тому, что вывод будет направлен как на tty, так и на указанное имя файла.
Это должно быть проблемой с процессами, которых я здесь не вижу? При необходимости можно опубликовать весь сценарий, но на самом деле это всего лишь механизмы меню, и в этом суть моей проблемы.
!#/bin/bash
...
search(){
echo "search log is $searchlog_bank"
read -p "Press Enter to continue..."
if [ saveconfirm_bank!=“NOT SAVING SEARCH LOG” ]; then
egrep -io “.*keyword_bank.*” $csvfile_bank | tee ./$searchlog_bank
read -p “<Search complete. Press Enter to continue>”
savelog_bank=“<NOT SAVING SEARCH LOG>”
clear
menu_display
else
egrep -io ".*$keyword_bank.*" $csvfile_bank
read -p "<Search complete. Press Enter to continue...>"
clear
menu_display
fi
}
#script init global variables
csvfile_bank="<NOT LOADED>"
searchlog_bank="<NOT SAVING A SEARCH LOG>"
fileext_bank="<NOT ENTERED>"
keyword_bank="<NOT ENTERED>"
regex_bank="<NOT ENTERED>"
#main script body
clear
menu_display
while [ $selection != “8” ]; do
case $selection in
1) readcsv;;
2) enter_searchlog;;
3) readext;;
4) readkeyword;;
5) readregex;;
6) clearparam;;
7) search;;
8) echo "See You Space Cowboy"
break;;
*) menuerror;;
esac
done
...