天天看點

shell腳本函數名不能使用Linux關鍵字或指令

舉例:

手工執行打包指令是ok的,但使用腳本沒有結果

#!/bin/bash
# 定時任務調用,打包備份
tar(){
    tar -zcf /backup/`date +%F`_`hostname`_etc.tar.gz /etc/ &>/dev/null
}
main(){
    tar
}
main

[root@proxy1 backup]# sh /server/scripts/tar-etc.sh 
[root@proxy1 backup]# pwd
/backup
[root@proxy1 backup]# ls
[root@proxy1 backup]# 
# 沒有執行ok           

原因就是函數名使用了shell的tar指令

将函數名改為"tar_etc"執行:

#!/bin/bash
# 定時任務調用,打包備份
tar_etc(){
    tar -zcf /backup/`date +%F`_`hostname`_etc.tar.gz /etc/ &>/dev/null
}
main(){
    tar_etc
}
main

[root@proxy1 backup]# sh /server/scripts/tar-etc.sh 
[root@proxy1 backup]# ls
2020-11-03_proxy1_etc.tar.gz
# 結果運作ok           

繼續閱讀