我寫了一個bash腳本,它接受一組參數,並根據那些我們做不同的事情。所以在這種情況下,我想說:不被識別爲命令 - bash
./acorn.sh aisiscore install
但它關係到我的錯誤消息,指出第一個參數是不是reconized,我應該使用aisiscore或資產。我檢查了拼寫,我是正確的,我沒有正確檢查參數?
#!/bin/bash
set -e
function checkCoreArgument(){
if [[ $1 == 'aisiscore' ]]
then
checkAisisArguments
elif [[ $1 == 'assets' || $1 == 'asset' ]]
then
checkAssetsArguments
else
echo "$1 is not recognized. Please try aisiscore or assets"
fi
}
function checkAisisArguments(){
if [[ $2 == 'install' ]]
then
installAisisCore
elif [[ $2 == 'update' ]]
then
updateAisisCore
elif [[ $2 == 'components' ]]
then
callCompomnentsCheck
else
echo "$2 is not recognized. Please try install or update."
fi
}
function checkAssetsArguments(){
if [[ $2 == 'install' ]]
then
installAssets
elif [[ $2 == 'update' ]]
then
updateAisisCore
else
echo "$2 is not recognized. Please use install or update."
fi
}
function installAisisCore(){
cd scripts/install/
chmod +x InstallAisisCore.sh
sudo InstallAisisCore.sh
}
function updateAisisCore(){
cd scripts/update/
chmod +x UpdateAisisCore.sh
sudo UpdateAisisCore.sh
}
function installAssets(){
cd scripts/install/
chmod +x InstallAssets.sh
sudo InstallAssets.sh
}
function updateAisisCore(){
cd scripts/update/
chmod +x UpdateAssets.sh
sudo UpdateAssets.sh
}
function callCompomnentsCheck(){
cd scripts/install
chmod +x InstallComponents.sh
sudo ./InstallComponents.sh
}
###### =============================== [ Application run ] =============== ######
checkCoreArgument #run the app!
這是自上而下,所以它更容易閱讀。
蘇ggestion:對每個case使用'while [[$#-gt 0]]'循環與'case'語句和'shift'循環所有參數,隨時設置變量以跟蹤哪些任務應該被執行(以及你需要的任何其他數據)。然後將實際執行任務的代碼放在由變量控制的if塊中。 –