Если у вас установлен pgrep, вы можете сделать его более детерминированным, например:
smg(){
xhost +
sudo echo "Starting servermanager" #To get sudo prompt in fg
sudo java -jar ~/downloads/servermanager.jar 2>/dev/null &
while ! pgrep -l servermanager.jar > /dev/null ; do :; done
xhost -
}
... в зависимости от окончательного имени процесса. Если срабатывает слишком быстро, вы всегда можете оставить небольшой сон
после цикла while.
Это базовая оболочка расширение . Поскольку вызывающая оболочка распознает *
как подстановочный знак, она фактически интерпретирует это для вас и передает список всех элементов в /var/ вашему сценарию.
Если вы экранируете подстановочный знак или заключаете в подстановочный знак, чтобы предотвратить его раскрытие в вызывающей оболочке, он будет передан вашему сценарию так, как вы ожидаете.
Вот два примера, которые, вероятно, сделают то, что вы хотите, если я правильно понимаю ваше намерение.
/path/to/script.sh '/var/run/*'
/path/to/script.sh /var/run/\*
Оба этих примера приводят к тому, что строка /var/run/*
передается КАК -ЕСТЬ вашему сценарию, где она становится $1
.