Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 通过ssh发送带有$variable filename的rm命令_Bash_Ssh - Fatal编程技术网

Bash 通过ssh发送带有$variable filename的rm命令

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

在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进入
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?}