3
我有一個bash腳本,旨在冪等。它創建符號鏈接,如果鏈接已經存在,應該可以。這個bash -e和-L測試爲什麼不能捕獲這個鏈接?
下面是摘錄
L="/var/me/foo"
if [[ -e "$L" ]] && ! [[ -L "$L" ]];
then
echo "$L exists but is not a link."
exit 1;
elif [[ -e "$L" ]] && [[ -L "$L" ]];
then
echo "$L exists and is a link."
else
ln -s "/other/place" "$L" ||
{
echo "Could not chown ln -s for $L";
exit 1;
}
fi
文件/var/me/foo
已經指向/other/place
一個符號,根據ls -l
。
然而,當我運行此腳本if
和elif
分支進入不,相反,我們進入else
並嘗試ln
,這將失敗,因爲該文件已經存在。
爲什麼我的測試不起作用?
您可以創建可在臨時目錄中運行一個實例(甚至是使用'mktemp的-d'上創建自己的目錄),因此人們可以複製/粘貼,並無需改變運行這些名字還是擁有root權限? –
另外:'/ other/place'是否存在?如果它應該,請確保您的示例實際上創建它(當然,在您的臨時目錄下)。 –
...另外,如果'-e'爲真,爲什麼只檢查'-L'? –