Bash 通过ssh发送带有$variable filename的rm命令
在bash脚本中,我尝试执行以下操作:Bash 通过ssh发送带有$variable filename的rm命令,bash,ssh,Bash,Ssh,在bash脚本中,我尝试执行以下操作: ssh -n $username@server2 "rm ${delete_file}" 但总是会出现错误: rm: missing operand 当我 > echo $delete_file > /var/www/site/myfile.txt 我找到了正确的路径 我做错了什么 在您的情况下,$delete\u file是否设置在远程主机上而不是当前计算机上? 如果您希望在远程端展开$delete_file(即,在ssh'ing进入s
ssh -n $username@server2 "rm ${delete_file}"
但总是会出现错误:
rm: missing operand
当我
> echo $delete_file
> /var/www/site/myfile.txt
我找到了正确的路径
我做错了什么 在您的情况下,
$delete\u file
是否设置在远程主机上而不是当前计算机上?
如果您希望在远程端展开$delete_file
(即,在ssh'ing进入server2
之后),则必须使用单引号:
ssh -n $username@server2 'rm ${delete_file}'
除此之外,您是在同一脚本中设置delete_file
的值(在ssh'ing之前),还是在调用脚本之前?如果是后者,则无法工作:变量不会传播到当前脚本/会话调用的脚本。
对此,您可以执行以下操作:
delete_file=<your-value> ./ssh-script
现在,脚本的使用非常简单:
./ssh-script <your-file-for-deletion>
每当
$1
碰巧未设置或为空时,脚本将立即退出退出代码1
,并将给定消息打印到stderr
否,抱歉。变量在本地主机上设置,然后通过ssh发送到远程主机。我已经更新了答案。添加了有关最佳实践的其他说明。
#!/bin/bash
# $1: file to delete
delete_file=${1:?Missing parameter: which file for deletion?}
ssh -n $username@server2 "rm ${delete_file}"
./ssh-script <your-file-for-deletion>
delete_file=${1:?Missing parameter: which file for deletion?}