0

我正在编写一个 bash 脚本并想切换到另一个用户,cd 到用户 bash_profile 中 MYDIR 指定的目录并列出内容。

目前我有:

read username
su - app${username} -c ls $MYDIR

输出什么都没有,我的第一个猜测是从用户配置文件中读取 $MYDIR 是一个问题,因为手动执行它可以正常工作,例如

#su - appadmin
#ls $MYDIR
4

2 回答 2

1

您需要引用要执行的命令。

目前,shell 正在替换$MYDIR为调用者环境中的值。也-c只传递下一个要执行的参数,即ls没有$MYDIR- 你需要在整个远程命令周围加上引号:

su - app${username} -c 'ls $MYDIR'
于 2009-11-08T22:43:44.983 回答
0

更改$MYDIR${MYDIR:?}。如果未设置 MYDIR,这将导致错误。您可能没有导出配置文件中的变量,这就是它在命令行中工作而不是在脚本中工作的原因。

于 2009-11-08T22:53:13.440 回答