我正在从不同的用户 ID 执行以下 shell 脚本。但每次我执行这个脚本时,它都会顺利运行到“sudo su ${USER_ID}”。然后就停止执行了。请建议我如何通过脚本登录到不同用户后执行整个命令。
下面是脚本:
#!/bin/bash
PATCH_FILE=" "
USER_ID=" "
Grp_ID=" "
sudo mv ${PATCH_FILE} /tmp
sudo chown ${USER_ID}:${Grp_ID} /tmp/${PATCH_FILE}
sudo su ${USER_ID}
cd /tmp
unzip ${PATCH_FILE}
答案1
您的脚本不会停止执行,它会按照指示执行操作。它启动一个交互式 shell,并且该 shell 等待输入。它不会从脚本中读取输入,除非您告诉它这样做:
sudo su ${USER_ID} << EOF
cd /tmp
unzip ${PATCH_FILE}
EOF
请注意,这sudo su
几乎总是不必要的。
请注意,上面的示例解决了一般问题,将行作为标准输入传递。这不一定是适合您情况的最佳解决方案。