所以我目前正在实习,我们在这里与 mintlinux 合作。
我的老板希望我创建一个可执行文件,单击它后会自动将 libreoffice 从 5.1 更新到 5.3。
我创建了这样的 bash 文件(我不确定这是否正确,因为我不使用 mintlinux 或没有任何使用经验)
#! /bin/bash
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update && sudo apt-get dist-upgrade
但是我打开 bash 文件后终端立即关闭,有什么方法可以解决这个问题吗?
答案1
如果您只是希望窗口保持打开状态直到您能够看到那里有什么样的输出,那么您可以使用 read 命令。
read -rsp $'Press enter to continue...\n'
但我觉得这里面有一个更大的问题:在 bash 脚本中使用“sudo”通常不是一个好主意。你应该跑步剧本和改为使用 sudo 命令。
你的脚本不只是更新 Libre Office,它还对系统进行了完整的升级全部包。
如果你想更新 Libre Office仅有的,则需要指定:
sudo apt-get install --only-upgrade libreoffice
如果您的老板希望 Libre Office 安装保持最新,您可能希望检查如何使用 cron 执行此操作;它是否可以帮助您在每次重启、每 X 小时(或分钟)等时执行此操作。
并且由于有一个“root”的 crontab(即运行:“sudo crontab -e”),如果您以这种方式处理,则也不会遇到“sudo 问题”。
答案2
当你从图形界面单击一个可执行文件时,它会从头到尾执行其内容,最后退出。
如果您因为某种原因想要保持终端打开(即检查输出),在脚本完成后,您可以例如:
- 使用以下命令从终端执行脚本:
./your_script.sh
- 在末尾添加“sleep”。这样脚本将从头到尾执行,但直到“休眠时间”结束才会到达末尾。您可以这样做:
项目清单
#! /bin/bash
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update && sudo apt-get dist-upgrade
sleep 30
这将在 apt-get 命令完成(或崩溃)后保持终端打开 30 秒。您可以使用其他时间值(单位),例如“5m”(5 分钟)或“2h”(2 小时)。