LOG_FILE=/tmp/1.txt
su - oracle <<EOF >> $LOG_FILE
whoami
echo "Heloo"
EOF
LOG_FILE=/tmp/1.txt
su - oracle <<EOF | tee -a $LOG_FILE
whoami
echo "Heloo"
EOF
如果我将传递1则尝试参数意味着option1,if 2 option2。如果相同的代码使用if option 1否则option 2重复2次,则其工作是为了最小化传递变量但不起作用的代码。 >
LOG_FILE=/tmp/1.txt
if [ ${1} -eq 1 ]
then
x=">> $LOG_FILE"
else
x="| tee -a $LOG_FILE"
fi
su - oracle <<EOF $x
whoami
echo "Heloo"
EOF
exit 0
答案 0 :(得分:0)
您几乎可以使用eval来执行命令
您可以只将 su-oracle 命令创建为变量as并与变量x串联,如图所示
LOG_FILE=/tmp/1.txt
if [ ${1} -eq 1 ]
then
x=">> $LOG_FILE"
else
x="| tee -a $LOG_FILE"
fi
y="su - oracle <<EOF $x"
然后您可以使用eval执行完整的表达式
eval $y
休息将保持不变。
完整代码。
LOG_FILE=/tmp/1.txt
if [ ${1} -eq 1 ]
then
x=">> $LOG_FILE"
else
x="| tee -a $LOG_FILE"
fi
y="su - oracle <<EOF $x"
z="EOF"
eval $y
whoami
echo "Heloo"
eval $z
exit 0
如果上述方法不起作用,您可以尝试为两种情况创建不同的功能
LOG_FILE="p.txt"
logFile()
{
su -oracle <<EOF >> "${LOG_FILE}"
whoami
echo "HEllo"
EOF
}
logPrint()
{
su -oracle <<EOF | tee -a "${LOG_FILE}"
whoami
echo "HEllo"
EOF
}
if [ ${1} -eq 1 ]
then
logFile
elif [ ${1} -eq 2 ]
logPrint
fi