【发布时间】:2014-01-02 18:07:22
【问题描述】:
我想编写一个 shell 脚本来执行以下操作:
- 一次登录一些远程机器,比如 host1 和 host2
- 转到 /tmp 目录并检查是否存在名为 'dirname' 的特定目录。如果不存在,则创建一个目录 'dirname'
- 进入目录/tmp/dirname
- 从本地机器复制一个带有变量runNo的文件到这个目录
我尝试了类似的方法,但它不起作用.. 任何帮助将不胜感激。谢谢!
#! /bin/bash
dir1=dirname
runNo=0
for i in 1 2
do
runNo=$(($runNo+1))
echo "host$i runNo$runNo"
ssh host$i "cd /tmp;
if [ -d $dir1 ]; then
cd $dir1;
else
mkdir $dir1;
cd $dir1;
fi;
cp ~/local/file$runNo file"
echo "done"
done
【问题讨论】:
-
不要测试
$dir1是否存在,只需使用mkdir -p "$dir1"。如果它已经存在,则什么都不会发生。 -
也就是说,在不检查 cd 是否成功的情况下,永远不要
cd进入目录。if mkdir -p "/tmp/$dir1" && cd "/tmp/$dir1"; then … else [handle error]; fi -
另外,试着从小一点开始看看它是否 ssh 工作...
ssh host$i "cd /tmp; touch imhere"看看文件imhere是否存在于远程机器中。
标签: bash shell unix if-statement ssh