将变量 RESULTS 保存到 tmp 文件中以便以后调用?

Save variable RESULTS into tmp file to be recalled later?

运行 一个脚本,它找到一堆文件并将 它们的 目录设置为变量。我使用这个脚本来提示用户输入的 osascript 对话框,然后调用与用户输入相似的文件。

一切正常。唯一的问题是,当我 运行 脚本时,加载对话框似乎需要 10-15 秒。如果我 运行 在第一次之后再次加载它,它会在 2-4 秒内加载....

问题是:

有没有办法更快地加载我的 "find" 变量的结果?也许将结果存储在 tmp 文件夹 中,这样下次它 运行s 时,它可以只搜索 txt 文件并将文件目录从那里放入变量中。 ..(除非他们搬家了,因此,我需要做一个 If-Else 语句吗?

#!/bin/sh

## READ LOCAL DIR FOR DIALOG BOX ICON
## CHANGE BACK-SLASH TO COLON (USE FOR VARIABLE IN OSASCRIPT)
dir=$(pwd)
dir=${dir//\//:}

abd="$(find ~/ -name "file.1")" 
cbd="$(find ~/ -name "file.2")"  
csd="$(find ~/ -name "file.3")" 
sad="$(find ~/ -name "file 4")" 


workout="$(osascript -e 'Tell application "System Events" to display dialog "Please enter your workout code:" with icon file "'$dir:appIcon.icns'" with title "Title_Here" buttons {"Cancel", "Ok"} default button 2 default answer ""' -e 'text returned of result' 2>/dev/null)"

if [ "$workout" = "ab" ] 
then 
  open "$abd"

elif [ "$workout" = "cb" ] 
then
  open "$cbd"

elif [ "$workout" = "cs" ] 
then
  open "$workout"

elif [ "$workout" = "sa" ] 
then
  open "$sad"

else
  exit     

fi

好吧,我找到了答案,看来 source 可以解决问题。为了使下面的脚本有意义,它将通过 Platypus.

在应用程序中编译

如果有什么可以压缩的,请分享。

#!/bin/sh

## READ LOCAL DIR
## CHANGE BACK-SLASH TO COLON (USE FOR VARIABLE IN OSASCRIPT)
dir=$(pwd)
dir=${dir//\//:}

## REPAIR AND RELOCATE FILE FUNCTION
## RUN FUNCTION ON FIRST LOAD AND WHEN USER INPUTS [repair]
## STORES VARIABLES IN TMP FOLDER TO BE CALLED LATER
function repaird() {    
    abd="$(find ~/ -name "FILE 1")" 
    cbd="$(find ~/ -name "FILE 2")"
    csd="$(find ~/ -name "FILE 3")"
    sad="$(find ~/ -name "FILE 4")"
    app="$(find ~/ -name "FILE.app")"  
    echo "#!/bin/sh" > /tmp/VAR_LIST.sh    ##CREATE .SH FILE TO STORE VARIABLES
    echo "" >> /tmp/VAR_LIST.sh
    echo "abd='$abd'" >> /tmp/VAR_LIST.sh
    echo "cbd='$cbd'" >> /tmp/VAR_LIST.sh
    echo "csd='$csd'" >> /tmp/VAR_LIST.sh
    echo "sad='$sad'" >> /tmp/VAR_LIST.sh
    cd /tmp
    chmod +x VAR_LIST.sh; }                

## CHECK IF VAR_LIST FILE EXIST
## IF NOT THEN PROCEED TO FIND FILES AND SAVE VARIABLES TO VAR_LIST

if ls /tmp/VAR_LIST.sh* 1> /dev/null 2>&1; then
    source /tmp/VAR_LIST.sh         ## USE SOURCE TO CALL OUR VAR_LIST 
else
    repaird
fi

## USE OSASCRIPT TO CALL DIALOG BOX WITH USER INPUT    

WORKOUT="$(osascript -e 'Tell application "System Events" to display dialog "Please enter your workout code:" & "\n[ab] = Ab" & "\n[cb] = Cb" & "\n[cs] = Cs" & "\n[sa] = Sa" & "\n[repair] = Repair Directory" with icon file "'$dir:appIcon.icns'" with title "MY_TITLE" buttons {"Cancel", "Ok"} default button 2 default answer ""' -e 'text returned of result' 2>/dev/null)"

## SEE IF USERS INPUT MATCHES ANY OF THE OPTIONS BELOW
## IF NOT THEN EXIT SCRIPT

if [ "$WORKOUT" = "ab" ] 
then 
  open "$abd"; afplay ohyeah.mp3

elif [ "$WORKOUT" = "cb" ] 
then
  open "$cbd"; afplay ohyeah.mp3

elif [ "$WORKOUT" = "cs" ] 
then
  open "$csd"; afplay ohyeah.mp3

elif [ "$WORKOUT" = "sa" ] 
then
  open "$sad"; afplay ohyeah.mp3

elif [ "$WORKOUT" = "repair" ]       ## REPAIR WILL DO THE FOLLOWING
then
  rm /tmp/VAR_LIST.sh             ## RM CURRENT VAR_LIST
  repaird                        ## RUN FUNCTION <REPAIRD>
  sleep 5; open "$app" &         ## DELAY 5 SECONDS THEN OPEN SCRIPT AS BACKGROUND
  close "$app"                   ## CLOSE SCRIPT  
else                             ## SCRIPT OPENS AFTER 5 SECONDS WHICH PROMPTS
  exit                           ## USER WITH SAME 

fi