这应该用bash脚本或automator或applescript完成吗?

时间:2013-06-21 04:04:17

标签: bash applescript automator

我有bash命令,其中包含一个文件的变量,该文件更新特定硬件的固件并为其提供序列号。

#!/bin/bash
fpath=$(dirname "$0")

ee_image=mlr-2000119.bin

sudo nvram tbt-options=4

sudo /usr/sbin/bless -mount / -firmware "$fpath/ThorUtilDevice.efi" -payload "$fpath/$ee_image" -options "-o -ej 1 -blast efi-apple-payload0-data" 

sudo reboot now

我想通过automator或applescript创建一个文件来创建同一个文件,但会自动将ee_image bin文件名增加一个。因此,最终用户不必总是在文本编辑中打开命令文件,手动进行更改然后保存然后执行文件..

对此的任何帮助都是神派。

2 个答案:

答案 0 :(得分:0)

脚本sudo reboot now中的最后一行会使任何类型的循环变得毫无意义。

但是,如果你坚持,请使用循环:

#!/bin/bash
fpath=$(dirname "$0")

for i in {2000119..3000119}; do
  ee_image=mlr-${i}.bin
  sudo nvram tbt-options=4
  sudo /usr/sbin/bless -mount / -firmware "$fpath/ThorUtilDevice.efi" -payload "$fpath/$ee_image" -options "-o -ej 1 -blast efi-apple-payload0-data" 
  sudo reboot now
done

这会循环到mlr-2000119.binmlr-3000119。您还可以考虑将参数传递给脚本,在这种情况下,您可以将原始脚本与ee_image行一起使用

  ee_image=mlr-$1.bin

并调用bash /path/to/your/script.sh 2000119

答案 1 :(得分:0)

@devnull写道:

  

你的脚本sudo reboot中的最后一行现在会使任何类型的循环变得毫无意义。

我相信reboot命令就像任何其他命令一样。它应该被回显到一个文件而不是被运行以为最终用户生成脚本。

我认为一个好主意是拥有一个创建脚本的脚本。

这类似于有多少网站在运作。服务器上的脚本可以回显HTML,CSS和JavaScript代码,供Web浏览器使用。

以下是一个例子:

#!/bin/bash

# set the path to the dir
dir=$(dirname $0)"/"

# set the path to the file that keeps track of the serial numbers
snFile="$dir""sn.txt"

# set the file name of the file to be generated
fileName="serialize"

# read the last serial number used
if [ -e "$snFile" ];
then
    read lastSN < "$snFile"
else
    lastSN="0"
fi

# increment the serial number
let "nextSN = $lastSN + 1"
echo "$nextSN" > "$snFile"

# create a path variable for the file being created.
generatedPath="$dir$fileName$nextSN.sh"

# generate the script
echo "#!/bin/bash" > "$generatedPath"
echo 'fpath=$(dirname "$0")' >> "$generatedPath"
echo '' >> "$generatedPath"
echo "ee_image=mlr-$nextSN.bin" >> "$generatedPath"
echo '' >> "$generatedPath"
echo 'sudo nvram tbt-options=4' >> "$generatedPath"
echo '' >> "$generatedPath"
echo 'sudo /usr/sbin/bless -mount / -firmware \"$fpath/ThorUtilDevice.efi\" -payload \"$fpath/$ee_image\" -options \"-o -ej 1 -blast efi-apple-payload0-data\" \' >> "$generatedPath"
echo '' >> "$generatedPath"
echo 'sudo reboot now' >> "$generatedPath"

# give the user some feedback
echo "generatedPath: $generatedPath"

如果你的最终用户运行bash脚本已经足够好了,那么我认为你差不多完成了。

如果您想拥有一个更好的用户界面并拥有一个Mac应用程序供最终用户运行,请给我发一封电子邮件,我可以帮助您。

kaydell@learnbymac.com