我学习的东西越多,我的问题就越多,而我越理解为什么很少有人做bash。简单是别的,但我喜欢它。Bash远程文件系统目录test
我已经设法弄清楚如何测试目录和那里writablity,但有一个问题,我试图通过ssh远程服务器做到这一点。测试/ tmp目录的第一个实例工作正常,但当第二部分被调用时,我得到line 0: [: missing
]'
现在,如果我用单引号替换\“,它的工作原理,但我认为单引号把变量引用的?有人可以解释这对我好吗?假设tmp目录确实存在并且是可写的,这里的脚本到目前为止
#!/bin/bash
SshHost="hostname"
SshRsa="~/.ssh/id_rsa"
SshUser="user"
SshPort="22"
Base="/tmp"
Sub="one space/another space"
BaseBashExist="bash -c \"[ -d \"$Base\" ] && echo 0 && exit 0 || echo 1 && exit 1\""
SSHBaseExist=$(ssh -l $SshUser -i $SshRsa -p $SshPort $SshHost ${BaseBashExist})
echo -n $Base
if [ $? -eq 0 ]
then
echo -n "...OK..."
else
echo "...FAIL"
exit 1
fi
BaseBashPerm="bash -c \"[ -w \"$Base\" ] && echo 0 && exit 0 || echo 1 && exit 1\""
SSHBaseExist=$(ssh -l $SshUser -i $SshRsa -p $SshPort $SshHost ${BaseBashPerm})
if [ $? -eq 0 ]
then
echo "...writeable"
else
echo "...not writeable"
fi
BaseAndSub="$Base/$Sub"
BaseAndSubBashExist="bash -c \"[ -d \"$BaseAndSub\" ] && echo 0 && exit 0 || echo 1 && exit 1\""
SSHBaseAndSubExist=$(ssh -l $SshUser -i $SshRsa -p $SshPort $SshHost ${BaseAndSubBashExist})
echo -n $BaseAndSub
if [ $? -eq 0 ]
then
echo -n "...OK..."
else
echo "...FAIL"
exit 1
fi
BaseAndSubBashPerm="bash -c \"[ -w \"$BaseAndSub\" ] && echo 0 && exit 0 || echo 1 && exit 1\""
SSHBaseAndSubPerm=$( ssh -l $SshUser -i $SshRsa -p $SshPort $SshHost ${BaseAndSubBashPerm})
if [ $? -eq 0 ]
then
echo -n "...writeable"
else
echo "...not writeable"
fi
exit 0
你是什么意思“很少有人这样做”?诚然,很少有人做得很好,但这完全是另一个话题。 – tripleee
没有冒犯的意图,只是在15年的发展中,我真的只有一个人,其实真正知道bash的人...... –