在crontab中如何引用已定義的環境變數
一個shell指令碼 /root/test/shell/test_crontab_env.sh,內部使用了一個環境變數 TEST_CRONTAB_ENV=test_crontab_env
且TEST_CRONTAB_ENV存在於 /etc/profile 中
如:
#!/bin/bash
echo "`date +%Y-%m-%d" "%H:%M:%S` $TEST_CRONTAB_ENV" >> /tmp/test_crontab_env.file
手動執行, 運行結果:
2010-09-04 11:23:38 test_crontab_env
添加到 crontab 中如下
*/1 * * * * /root/test/shell/test_crontab_env.sh
結果:
$> cat /tmp/test_crontab_env.file
2010-09-04 11:25:01
2010-09-04 11:26:01
...
這裡引用的環境變數無效了.
使環境變數在crontab中生效的方法:
1.傳參的方式
crontab中
*/1 * * * * /root/test/shell/test_crontab_env.sh "test_crontab_env"
test_crontab_env.sh 中
#!/bin/bash
echo "`date +%Y-%m-%d" "%H:%M:%S` $1" >> /tmp/test_crontab_env.file
2.在該shell指令碼中定義環境變數
test_crontab_env.sh 中
#!/bin/bash
TEST_CRONTAB_ENV=test_crontab_env
echo "`date +%Y-%m-%d" "%H:%M:%S` $TEST_CRONTAB_ENV" >> /tmp/test_crontab_env.file
3.在該shell指令碼中載入環境變數檔案
#!/bin/bash
source /etc/profile
echo "`date +%Y-%m-%d" "%H:%M:%S` $TEST_CRONTAB_ENV" >> /tmp/test_crontab_env.file
個人覺得還是第三種方法最實用