切换到不同用户时使脚本正常工作

切换到不同用户时使脚本正常工作

我对下面的脚本有一些担忧,该脚本从文件中每行创建文件夹。 Folder.list 位于 /scripts/ 。第一个脚本运行顺利,但在尝试切换到不同用户时第二个脚本不起作用。

-- 第一个脚本--

#!/bin/ksh
while read line
do
if [ ! -d $line ]
    then
     mkdir -p $line >/dev/null 2>&1 && echo "Directory $line created."
     else
    echo "Error: $line directory exists!"
   fi
done < folder.list

--第二个脚本--

#!/bin/ksh
#Switch user
export SUDO_ASKPASS=/keys/askpass.sh
sudo -A su - appuser<<EOF

#Go to folder.list directory
cd /scripts/


while read line
do
if [ ! -d $line ]
    then
     mkdir -p $line >/dev/null 2>&1 && echo "Directory $line created."
    else
    echo "Error: $line directory exists!"
   fi
done < folder.list
EOF

答案1

为了更清楚

考虑

cat <<EOF

foo bar $baz

EOF

fubar="Hello World"

cat <<EOF

echo $fubar
print \$fubar

EOF

当运行时会给

foo bar


echo Hello World
print $fubar

在第一只猫上,您会注意到 $baz 变量消失(假设未设置)。

在第二次运行时,我设置 fubar 变量,它与其值相呼应,以回显$fubarI escape $

你的第二个脚本应该是

#!/bin/ksh
#Switch user
export SUDO_ASKPASS=/keys/askpass.sh
sudo -A su - appuser<<EOF

#Go to folder.list directory
cd /scripts/


while read line
do
if [ ! -d \$line ]
    then
     mkdir -p \$line >/dev/null 2>&1 && echo "Directory \$line created."
    else
    echo "Error: \$line directory exists!"
   fi
done < folder.list
EOF

相关内容