kal*_*ger 5 linux ssh bash shell
我正在尝试编写一个 bash 脚本,但我是个新手。
除了某些特定命令给我带来的错误之外,一切都正常
./start_components1.sh: line 17: cmd1: command not found
Run Code Online (Sandbox Code Playgroud)
它们是我的机器的一些特定命令,我认为它们与当我通过 bash 脚本 ssh 进入机器时,环境未加载有关。我可能是错的。
不管怎样,如果我从终端正常 ssh 进入我的机器,然后执行命令,它就会完美地工作。
当我尝试通过 bash 脚本执行相同操作时,它告诉我找不到命令。
我用谷歌搜索了很多并尝试了不同的东西。什么都没起作用。
这是我的脚本(如果有帮助的话):
#!/bin/bash
USERNAME=odroid
while getopts r:d:p:f: option
do
case "${option}"
in
r) ROBOT=${OPTARG};;
esac
done
for HOSTNAME in ${ROBOT}; do
ssh -l ${USERNAME} "robot${HOSTNAME}" "./start_components${HOSTNAME}.sh; ls"
done
Run Code Online (Sandbox Code Playgroud)
编辑:我认为它可以工作在遵循@PauloScardine的提示后,我还意识到我的文件的权限没有设置为可执行,所以我sudo chmod +x fileToExecute
认为这解决了我的问题,但是:它仍然无法工作。该命令执行时没有任何错误(看起来),但它们并未真正执行。示例:如果我在我的机器上进入 ssh(没有 bash 脚本)并且我看到/opt/openrobots/bin/pom-ros我想要启动的组件已启动,我会得到一些输出等等。当我启动start_components2.sh应该启动的文件时/opt/openrobots/bin/pom-ros,我没有看到任何输出,并且我确信该组件没有启动,因为我没有效果:(
提前致谢
小智 -1
找不到命令通常意味着它在当前目录中找不到它,因为您使用了点来执行。
尝试输入脚本的完整路径。就像是:
ssh -l ${USERNAME} "robot${HOSTNAME}" "/home/${USERNAME}/start_components${HOSTNAME}.sh; ls"
Run Code Online (Sandbox Code Playgroud)
但是,只有当脚本 start_componets 位于 ${USERNAME} 变量后面的用户的主目录中时,这才有效
| 归档时间: |
|
| 查看次数: |
6997 次 |
| 最近记录: |