我正在尝试编写一个bash脚本,我是一个新手。
除了某些特定命令给我错误
之外,其他所有内容都在工作./start_components1.sh: line 17: cmd1: command not found
它们是我机器的一些特定命令,我认为它们与某种方式有关,当我通过bash脚本进入机器时,环境未加载。我错了。
无论如何,如果我从终端正常进入我的机器然后执行命令它会正常工作。
当我尝试通过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
编辑:我认为它正常工作在按照@PauloScardine的提示后,我也意识到我的文件的权限未设置为可执行文件,因此我sudo chmod +x fileToExecute
我认为这解决了我的问题但是:
它仍然无法正常工作。该命令执行没有任何错误(似乎)但它们并没有真正执行。示例:如果我在我的机器上使用ssh(没有bash脚本)并且/opt/openrobots/bin/pom-ros
我看到我要启动的组件已启动,我得到一些输出等等。当我启动应该启动start_components2.sh
的{{1}}文件时,我看不到任何输出,我确信该组件未启动,因为我没有效果:(
提前致谢
答案 0 :(得分:-1)
未找到命令通常意味着,当您使用点执行时,它无法在当前目录中找到它。
尝试为脚本添加完整路径。类似的东西:
ssh -l ${USERNAME} "robot${HOSTNAME}" "/home/${USERNAME}/start_components${HOSTNAME}.sh; ls"
但是,只有当脚本start_componets位于$ {USERNAME}变量
后面的用户的主目录中时,这才有效