ssh -f $user@$machine_name "cd $path; shard_path=`find . -name \"shard0\"`; cd $shard_path; mkdir temp"
目录结构是$path/node0/shard0
在这个脚本中,var
shard_path
为空,为什么?目录temp
是在~/
中构造的,而不是在shard0
中。 最佳答案
因为在发送到服务器的命令周围使用了双引号,所以该命令将在本地展开。它试图根据它们的局部值来替换$path
和$shard_path
,并且由于$shard_path
不是局部定义的,所以它扩展为空。
通过在服务器上执行命令时使用单引号,可以避免许多此类引号问题。您需要的精确引用取决于这些变量的确切定义位置。但从你的评论来看,这似乎是你需要的命令:
ssh -f $user@$machine_name "cd $path;"'shard_path=$(find . -name "shard0"); cd $shard_path; mkdir temp'
关于linux - 我的bash脚本怎么了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13717859/