macos - 尝试在脚本中使用“rm”
问题描述
我编写了这个 bash 脚本来删除旧版本的 Mac 应用程序并安装新版本。一切正常,除了在安装新应用程序之前似乎没有删除应用程序 - 相反,它似乎覆盖了它的顶部,这在您尝试启动应用程序时会导致一些问题。想知道我的脚本哪里出错了 - 任何帮助都将不胜感激。
#!/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
解决方案
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 命令时, 由于路径中有空格,rm $APP
所以需要 4 个参数Applications/8x8
, -
, Virtual
, 。Office.app
`
推荐阅读
- google-drive-api - 无法在 google drive Web Api 创建的 android 应用程序中列出 google drive 中的文件
- r - 带有重音符号的 Rmarkdown pdf kable
- angular - Angular 6 订阅更改“this”上下文
- python - Signal with named parameter
- java - 在 Java 中初始化对象而不声明类或使用类
- python - 使用 python pandas 或任何其他更好的库在工作表中添加一列并在整列中应用此 excel 公式
- scala - 使用 asInstanceOf Scala 进行类型转换后的错误类型
- javascript - DOM// 将值返回到输入以进行编辑:https://codepen.io/iacob24/pen/BPmGaW
- c# - LINQ ToDictionary 方法和复制字典迭代循环之间的性能差异
- java - 使用 ssl 证书调用 Web 服务