这就是我正在尝试的
SCRIPT1
var=10
sh -x script2 "$var"
SCRIPT2
su - someuser << EOF
1
cd dir
echo "This is : $1 Error" >> somefile
2
2
0
exit
EOF
script2中的所有内容都在执行。当我检查文件“somefile”时,输出是
This is : Error
未显示var
答案 0 :(得分:0)
它对我来说很好:
cat s1
var=10
sh -x /tmp/s2 "$var"
cat s2
su - my_id << EOF
id
echo $1
EOF
./s1
+ su - my_id
+ 0<<
id
echo 10
my_id's Password: <<< su is prompting for my password
uid=222(my_id) gid=222(my_group) ...
10
因为你没有添加#!/ bin / xxxxx,我认为默认是执行/ bin / sh或者可能是$ SHELL设置的。检查这两个是否符合您的期望。也许添加显式的#!/ bin / ksh(或#!/ bin / sh ...)以确保你得到你想要/期望的shell。