linux -- shell指令碼呼叫其他指令碼,向shell指令碼傳遞引數
阿新 • • 發佈:2019-01-28
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...'