我學習的東西越多,我的問題就越多,而我越理解爲什麼很少有人做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的人...... –