我有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文件名增加一个。因此,最终用户不必总是在文本编辑中打开命令文件,手动进行更改然后保存然后执行文件..
对此的任何帮助都是神派。
答案 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.bin
到mlr-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