Попытка использовать 'rm' в скрипте - PullRequest
0 голосов
/ 16 марта 2020

Я написал этот скрипт bash, чтобы удалить старую версию приложения Ma c и установить новую версию. Все работает хорошо, за исключением того, что кажется, что оно не удаляет приложение перед установкой нового - вместо этого оно, кажется, записывается поверх него, что вызывает некоторые проблемы при попытке запустить приложение. Хотите знать, где я ошибаюсь в моем сценарии - любая помощь будет высоко ценится.

#!/bin/sh

#Script to remove the old version of 8x8 Virtual Office and the install the latest version.


APP=/Applications/8x8\ -\ Virtual\ Office.app
VERSION=$(defaults read /Applications/8x8\ -\ Virtual\ Office.app/Contents/Info | grep CFBundleShortVersionString | cut -c35-39)
#See Script options in JSS for $4 value
LATEST="$4"
pid=$(ps -fe | grep '8x8 - Virtual Office' | grep -v grep | awk '{print $2}')

if test -e "$APP" ; then

  if [ "$VERSION" \< "$LATEST" ] ; then
    echo "8x8 Virtual Office $VERSION found"
    echo "Application needs updating..."

    if [[ -n $pid ]]; then
      echo "Quitting application first..."
      kill $pid
      sleep 5s
      echo "Removing old version..."
      rm -f $APP
      sleep 5s 
      echo "Installing new version..."
      jamf policy -event install88
    else
      echo "Application not running, removing old version..."
      rm -f $APP
      sleep 5s 
      echo "Installing new version..."
      jamf policy -event install88
      exit 0
    fi

  else
    echo "No update required"
    exit 0
  fi

else
  echo "8x8 Virtual Office not found, installing..."
  jamf policy -event install88
    exit 0
fi

1 Ответ

1 голос
/ 16 марта 2020

APP=/Applications/8x8\ -\ Virtual\ Office.app

Ваш путь содержит пробелы. Таким образом, команда удаления должна быть rm -f "$APP"

Демо:

:=>APP=/Applications/8x8\ -\ Virtual\ Office.app
:=>echo $APP
/Applications/8x8 - Virtual Office.app
:=>rm $APP
rm: cannot remove '/Applications/8x8': No such file or directory
rm: cannot remove '-': No such file or directory
rm: cannot remove 'Virtual': No such file or directory
rm: cannot remove 'Office.app': No such file or directory
:=>rm "$APP" 
rm: cannot remove '/Applications/8x8 - Virtual Office.app': No such file or directory
:=>

В приведенной выше демонстрации, когда мы выполняем rm $APP команда rm принимает 4 аргумента Applications/8x8, -, Virtual, Office.app из-за пробелов в пути. `

...