1. 程式人生 > >linux -- shell指令碼呼叫其他指令碼,向shell指令碼傳遞引數

linux -- shell指令碼呼叫其他指令碼,向shell指令碼傳遞引數

Shell 指令碼也可以看做是一個一個的函式,將命令進行了封裝。

看看自己的例子:

  • outTop.sh 是最頂層的。【負責呼叫其他的shell 指令碼】
  • out1.sh 是第2層。【被outTop.sh呼叫】
  • outInsert是第2層。【被outTop.sh呼叫】

檔案 outTop.sh中的內容:

#!/bin/bash
#whereState="apk_name='com.airkast.KCSFAM' OR apk_name='com.amparosoft.progressivemetronome.free' OR apk_name='com.apps1pro1.word' OR apk_name='com.appsfoundry.scoopwl.id.popular'"
echo 'Top started'
# 1.下面呼叫了當前目錄下的out1.sh 。
# 2.並且進行傳遞了引數 : "apk_name='com.amparosoft.progressivemetronome.free'"
source ./out1.sh "apk_name='com.amparosoft.progressivemetronome.free'"
source ./outInsert.sh "apk_name='com.apps1pro1.word'"
source ./outInsert.sh "apk_name='com.appsfoundry.scoopwl.id.popular'"
echo 'Top ended'

檔案 out1.sh中的內容:
#!/bin/bash
#1.接受從外界傳入的引數。$1 代表第一個引數,$2 代表第二個引數,以此類推。
#2.將傳進來的引數,給了whereState 變數。
whereState=$1
destPath="/volume1/testData/sql/"
#3.mysqldump 是mysql相關的命令,因為裝上了mysql,所以mywqldump作為環境變數,是可以被識別的。
#4.具體瞭解myslqdump 相關的命令,可以通過 mywql --help檢視。
#5.注意環境變數的使用: ${destPath}
#6.> 表示放入。
#7.>> 表示追加。
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_files --where=$whereState > ${destPath}app_files.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package --where=$whereState > ${destPath}apk_package.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_android --where=$whereState > ${destPath}apk_package_android.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_java --where=$whereState > ${destPath}apk_package_java.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_third --where=$whereState > ${destPath}apk_package_third.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test combination --where=$whereState > ${destPath}combination.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test inheritance --where=$whereState > ${destPath}inheritance.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test invoke_androguard --where=$whereState > ${destPath}invoke_androguard.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test method_androguard --where=$whereState > ${destPath}method_androguard.sql
echo 'DB created...'

檔案 outInsert.sh中的內容(同上):
#!/bin/bash
whereState=$1
destPath="/volume1/testData/sql/"
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test apk_files --where=$whereState >> ${destPath}app_files.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test apk_package --where=$whereState >> ${destPath}apk_package.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test apk_package_android --where=$whereState >> ${destPath}apk_package_android.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test apk_package_java --where=$whereState >> ${destPath}apk_package_java.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test apk_package_third --where=$whereState >> ${destPath}apk_package_third.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test combination --where=$whereState >> ${destPath}combination.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test inheritance --where=$whereState >> ${destPath}inheritance.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test invoke_androguard --where=$whereState >> ${destPath}invoke_androguard.sql
mysqldump -n -t -h172.24.64.179 -umisc -p123456 app_test method_androguard --where=$whereState >> ${destPath}method_androguard.sql
echo 'data inserted...'