【发布时间】:2020-06-04 09:22:27
【问题描述】:
我正在尝试将参数“USERNAME”的值传递给远程主机中的 shell 脚本。之后我试图从那个脚本访问它。 Jenkins 作业的 ssh 部分和脚本中,如下所示。
詹金斯工作的 SSH 部分
#!/bin/bash
ssh -tt shan@<ip-addr> '
ls -la /opt/scripts/
/opt/scripts/./name_script.sh ${USERNAME}
'
脚本
#!/bin/bash
echo $1
当我在服务器中尝试以下操作时,脚本完美运行。
./name_script.sh Shan
但是对于上面发布的场景,它不起作用。有人可以帮忙吗?
【问题讨论】:
-
您能否尝试在您的第一个脚本中打印 USERNAME 变量。还尝试一件事,而不是单引号尝试 3 个单引号。 '''你的代码'''
-
可以选择注入环境变量或准备运行环境。你有这些吗?
-
@pratikvasa 当我尝试打印用户名时,它工作正常。
-
@IanW 嗨,Ian,在这个脚本中,我想要做的是,我正在远程服务器中执行一个 shell 脚本。以便该脚本将在该特定主机中完成工作。
-
把你的脚本改成
echo :$1:,你可能会发现你得到了“::”。添加一行set以查看环境变量。 ${USERNAME} 在吗?不确定它是否被设置。有趣的discussion here 或阅读手册页。你可能需要一个“;”在每一行的末尾。您可以尝试 echo $q >somefile 看看它是否只是通过 tty 将输出返回给您。
标签: linux bash shell jenkins devops