我正在编写一个bash脚本,想要切换到另一个用户,在用户bash_profile中进入由MYDIR指定的目录并列出内容。
目前我有:
read username
su - app${username} -c ls $MYDIR
输出什么都没有,我的第一个猜测是从用户配置文件中读取$ MYDIR是一个问题,因为手动操作很好,例如。
#su - appadmin
#ls $MYDIR
答案 0 :(得分:1)
您需要引用要执行的命令。
目前,shell正在使用来自调用方环境的值替换$MYDIR
。另外-c
只传递下一个要执行的arg,即ls
没有$MYDIR
- 你需要在整个远程命令周围加上引号:
su - app${username} -c 'ls $MYDIR'
答案 1 :(得分:0)
将$MYDIR
更改为${MYDIR:?}
。如果未设置MYDIR,这将导致错误。您可能没有在配置文件中导出变量,这就是它在命令行中工作的原因,而不是脚本。