Это как-то связано с Использовать замененную строку в качестве команды в скрипте оболочки Я спрашивал в прошлом году. Этот принятый ответ сработал хорошо.
#!/usr/bin/env bash
for user in ytu
do
cd /home/${user}/H2-Data/crons
for path in "$user"_*_monthly_report.py
do
if [ -e $path ]
then
. ../../.profile
userpython=${user^^}_PYTHON
echo ${!userpython} $path
else
break
fi
done
done
Это отголосок, который я ожидал:
/ home / ytu / anaconda3 / bin / python ytu_clinic217_monthly_report.py
/ home / ytu/ anaconda3 / bin / python ytu_clinic226_monthly_report.py
Однако, просто изменив ${user^^}_PYTHON
на $YTU_PYTHON
, что должно быть точно так же, в этом случае сценарий bash теперь выдает:
ytu_clinic217_monthly_report.py
ytu_clinic226_monthly_report.py
Я даже пытался userpython=/home/ytu/anaconda3/bin/python
, но в итоге все так же. Тем не менее, если я echo $userpython
, я все еще могу получить / home / ytu / anaconda3 / bin / python в последних случаях.
Интересно, почему не может userpython
бытьоценивается больше, просто присваивая переменную явно, и как я могу сделать это правильно?