需求描述:mysql
寫shell腳本的過程當中,有時會須要獲取腳本的名字,好比,有的時候,腳本sql
中會有usage()這種函數,可能就會用到腳本的名字。shell
實現方法:bash
shell腳本中,經過使用$0就能夠獲取到腳本的名字或者說腳本自己。oracle
操做過程:函數
1.經過如下的腳本寫了一個腳本的使用函數usage()測試
#!/bin/bash #function usage means how to use this script. usage() { echo "Usage: $0 process_name1" echo "for example $0 mysqld" } #if no parameter is passed to script then show how to use. if [ $# -eq 0 ]; then usage exit fi
備註:以上腳本的意思就是,若是腳本執行時,腳本的參數是0個,那麼就調用usage函數,而後退出。this
2.執行而且測試,是否會輸出腳本的名字spa
[oracle@standby ~]$ ./ts01.sh Usage: ./ts01.sh process_name1 for example ./ts01.sh mysqld
說明:執行測試腳本,沒有給任何的參數即腳本參數的數量是0個,那麼就調用了usage()函數,此時說出了腳本的名字或者說$0位置的內容,此處輸出的是命令行
./ts01.sh也就是$0
或者,經過sh命令進行調用腳本
[oracle@standby ~]$ sh ts01.sh Usage: ts01.sh process_name1 for example ts01.sh mysqld
備註:輸出的正好是ts01.sh
或者經過絕對路徑的方式調用腳本
[oracle@standby ~]$ /home/oracle/ts01.sh Usage: /home/oracle/ts01.sh process_name1 for example /home/oracle/ts01.sh mysqld
備註:輸出的絕對路徑加上腳本的名字。
小結:
經過以上測試能夠知道,$0就是命令行中寫的是什麼輸出就是什麼,可是,經過sh命令調用腳本,就是腳本名字自己了,不帶./也不帶路徑。
主要看腳本的調用方式是什麼。
文檔建立時間:2018年3月14日10:27:54