需求描述:
寫shell腳本的過程中,有時會需要獲取腳本的名字,比如,有的時候,腳本
中會有usage()這種函數,可能就會用到腳本的名字。
實現方法:
shell腳本中,通過使用$0就可以獲取到腳本的名字或者說腳本本身。
操作過程:
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函數,然后退出。
2.執行並且測試,是否會輸出腳本的名字
[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