功能說明:用root用戶執行一個腳本,腳本里需要切換到普通用戶DT去執行其他命令,其中就用到了EOF,用法如下:
#!/bin/bash
su - DT<<EOF
cd apache-tomcat-7.0.54/bin
sh startup.sh
EOF
當時以爲su - DT就跟在交換界面執行一樣會把環境也切換過去,所以在分界符EOF裏用的是相對路徑,結果一運行就報錯:
-bash: line 8: cd: apache-tomcat-7.0.54/bin: 沒有那個文件或目錄
然後就做了個測試,腳本如下:
#!/bin/bash
echo "`pwd`"
su - DT<<EOF
echo "`pwd`"
EOF
結果如下:
[root@localhost ~]# sh test.sh
/root
/root
從這裏可以看出來su - DT<<只是把用戶切過去了但環境變量還是root,所以在EOF分界符裏的語句都得用絕對路徑。