永发信息网

unix shell中的here document问题

答案:1  悬赏:0  手机版
解决时间 2021-07-28 21:50

工作要自动调用一个脚本,要在各用户间su来su去,为了让脚本可以自动执行,使用了here document。但是发现在su过用户以后,使用here document的那部分语句使用的变量都失效了,求救。附上示例:

a=10
su - XXXX <<sp1
echo 'daociyiyou'
id
a=9
echo $a
ls > test
exit
sp1
echo 'out',$a

使用root用户执行,结果:

daociyiyou
uid=1001(XXXX) gid=....

10
out,10

最佳答案
#!/bin/bash
a=10
su - XXXX <<sp1
echo 'daociyiyou'
id
a=9
echo "\$a"
ls > test
exit
sp1
echo 'out',$a


----------------------------------------------
echo "\$a" // 当前shell会对 "\$a"进行解析, 然后"\$a"会被解析成 字符串 "$a", shell 将字符串"$a"传递给 su 产生的shell, su 的shell 遇到 echo "$a", 就输出 "9" 了。

总之, "\$a"被两个不同的shell 各解析了一次。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
深圳的赛格大厦有多少层?
遂平县驻马店无限极中草药美容养生馆(马神庙
谁知道炽天使全集的下载地址?
手机网游魔力世纪,四降宠物初属是多少!具体
高校秋季开学自查报告,高校科研实验室安全检
为什么空间抢车位老开通不了?
DNF中系统给了999999个糖要怎么取
为什么总梦到半人半兽的动物?
泰坦之旅的问题~!
关于清明扫墓的诗句,清明节祭奠亲人的诗句有
DNF后跳跟什么有关
山阳区焦作岗庄建筑设备租赁站在哪里啊,我有
什么制作MP3歌曲?
怎样辨别20元钱钞票的真假?
合唱指挥是什么,合唱指挥和交响乐队指挥的手
推荐资讯
高三英语基础很差怎样提高成绩
为什么中国山寨不多仿些日系手机?
DNF漫游技能 死亡左轮 加满是 多少级?
比喻句(30句)
昨天湖南卫视10点播的电视剧叫什么名字啊
张湾区十堰拓威运动(和昌泛谰巴逦?地址在哪里
解释下面初三化学题?
卷发到底要怎么打理才比较好看呢?
英雄岛13级后咋没任务做了?
最近脸上老涨豆豆,该怎么办,已三十多岁
谁有PSP3000.三国联合突破金手?
一个80厘米高的大熊猫公仔广州大概卖多少钱?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?