“设置”脚本将被多次使用,以根据需要创建尽可能多的不同脚本。
我需要收集多达 6 个变量。
变量的集合需要限制为
目录的长度(即~/AOKP/vendor/aokp 需要 3 个,~/AOKP/Build 需要 2 个)
预期输出:使用正确数量的变量命名的子脚本(即 frameworks_base.sh)
“设置”脚本如下:
#Create Array
echo "Please enter your Working Directory ROOT (Just the word: For ~/OurROM/ type: OurROM)"
read root
echo "Please Enter the Subequent Directories to the location of your git directory
# -a makes read command to read into an array
read -a gitdir
# get number of elements in the array
elements=${#gitdir[@]}
index=0
while [ "$index" -lt "$elements" ]
do
?????????
echo "Your Directory is ~/$root/${gitdir[0]}/${gitdir[1]}/${gitdir[2]}"
需要更改的子脚本(不需要回答...仅供参考)如下:
#!/bin/bash
# This script can be modified to allow for any directory
# Be sure to change all Directory References. References will be proceded in the line above by a *
clear
# * Change if Required
cd ~/OurROM/.scripts
wait
while true; do
clear
# * Change if Required
echo "What would you like to do with .scripts?"
echo "1. Enter Commit Message"
echo "2. Add All Changes"
echo "3. Commit All Changes"
echo "4. Push All Changes"
echo "5. Reset All Changes"
echo "6. Merge Current Directory"
echo "7. REVERT a Commit"
echo "8. "
echo "9. "
echo "10. "
echo ""
echo "Current Commit Message: $commit"
echo ""
echo -n "Enter your choice, or 0 for exit: "
read choice
echo
case $choice in
1)
clear
echo "Please Enter Your Commit Message:"
read commit
echo ""
echo "Commit: '$commit' - has been recorded"
echo ""
read -p "Press [Enter] key to continue..."
;;
2)
clear
echo "Deleting all Hidden files"
find ~/OurROM/ -iname "*.*~" -type f -exec rm {} \;
wait
echo "All HIDDEN files Deleted"
git add --all && git add . && git add -u
wait
echo ""
echo "Changes have been added"
read -p "Press [Enter] key to continue..."
;;
3)
clear
echo "Executing Commit..."
git commit -m "$commit"
wait
echo ""
echo "Message Commited"
echo ""
read -p "Press [Enter] key to continue..."
;;
4)
clear
echo "Pushing your Commit..."
# * Change if Required
git push git@github.com:OurROM/.scripts.git HEAD:jb-mr1
wait
echo ""
echo "$commit - has been pushed to OurROM"
echo ""
read -p "Press [Enter] key to continue..."
;;
5)
clear
git reset --hard HEAD && git clean -f && git checkout origin/jb-mr1
wait
echo ""
echo ".scripts has been RESET"
echo ""
read -p "Press [Enter] key to continue..."
;;
6)
clear
git merge origin/jb-mr1
wait
echo ""
echo "Local Directory is Merged with Online Data"
echo ""
read -p "Press [Enter] key to continue..."
;;
7)
clear
echo ""
echo "Paste the Commit Number you would like to Revert:"
read revert
echo "Commit #: '$revert' - will be reverted. Is this Correct?"
select yn in "Yes" "No"; do
case $yn in
Yes ) git revert $revert; wait; echo "Commit $revert has been reverted"; read -p "Press [Enter] key to continue..."; break;;
No ) break;
esac
done
echo ""
;;
8)
XXXXX REMOVED FOR BREVITY XXXXXXX
*)
echo "That is not a valid choice, try a number from 0 to 10."
;;
esac
done
第 3 部分:我已经使用了您的所有输入并得到了我想要的,现在来做点技巧!如何适当地嵌套以下 2 个 While 语句以一举收集数据?数组将是相同的,只有根可能会改变所以我有 2 个单独的菜单项。我想做一个,但我的嵌套失败了......
8)
clear
echo ""
#Create Array
echo "Please enter your Working Directory ROOT (Just the word: For ~/OurROM/ type: OurROM)"
read root
echo "Please Enter the Subequent Directories to the location of your git directory"
echo "Again, just the words: For ~/OurROM/frameworks/base type: frameworks base"
# -a makes read command to read into an array
read -a gitdir
# get number of elements in the array
elements=${#gitdir[@]}
fullPath="~/${root}"
index=0
while [ "$index" -lt "$elements" ] ; do
# append values from $gitdir until you are done
fullPath="${fullPath}/${gitdir[$index]}"
(( index++ ))
done
;;
9)
clear
echo ""
#Create Array
echo "Please enter your remote github.com repository ROOT (Just the word: For https://github.com/OurROM/ type: OurROM)"
read repo
echo "Please Enter the Subequent Directories to the location of your git repository"
echo "Again, just the words: For https://github.com/OurROM/frameworks/base type: frameworks base"
# -a makes read command to read into an array
read -a repodir
# get number of elements in the array
elements=${#repodir[@]}
repoSave="${repo}/"
index=0
while [ "$index" -lt "$elements" ] ; do
# append values from $gitdir until you are done
repoSave="${repoSave}${repodir[$index]}_"
(( index++ ))
repoPath=${repoSave%?}
done
;;
我试过这样嵌套,但它将第一个输出截断为 1 个数组值:
8)
clear
echo ""
#Create Array
echo "Please enter your Working Directory ROOT (Just the word: For ~/OurROM/ type: OurROM)"
read root
echo "Please enter your remote github.com repository ROOT (Just the word: For https://github.com/OurROM/ type: OurROM)"
read repo
echo "Please Enter the Subequent Directories to the location of your git directory"
echo "Again, just the words: For ~/OurROM/frameworks/base type: frameworks base"
# -a makes read command to read into an array
read -a gitdir
# get number of elements in the array
elements=${#gitdir[@]}
fullPath="~/${root}"
repoSave="${repo}/"
index=0
while [ "$index" -lt "$elements" ] ; do
# append values from $gitdir until you are done
fullPath="${fullPath}/${gitdir[$index]}"
(( index++ ))
index=0
while [ "$index" -lt "$elements" ] ; do
repoSave="${repoSave}${gitdir[$index]}_"
(( index++ ))
repoPath=${repoSave%?}
done
done
;;
我哪里做错了?