پرسش و پاسخ شماره ۹۷ - آموزش اسکریپت نویسی
X
تبلیغات
زولا

آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

#!/bin/bash

پرسش و پاسخ شماره ۹۷

پرسش و پاسخ شماره ۹۷

مستندات در این مورد مبهم است، اما می‌توانید به نوعی با دستورات داخلی پوسته آن را انجام دهید:

# Bash
if [[ ( -L $name ) && ( ! -e $name ) ]]
then echo "$name is a dangling symlink"
fi

صفحه man در Bash به شما می‌گوید که ‎"-L"‎ «اگر فایل موجود باشد و پیوند نمادین باشد» True را برمی‌گرداند، و ‎"-e"‎ «اگر فایل موجود باشد» True را باز می‌گرداند. آنچه می‌تواند روشن نباشد، آنست که ‎"-L"‎ ملاحظه می‌کند که فایل خودش لینک باشد. اما، برای ‎"-e"‎، فایل مقصد لینک نمادین است(جایی که لینک به آن اشاره می‌کند). به این دلیل است که شما برای دیدن آنکه پیوند نمادین منفصل است، به هر دو بررسی نیاز دارید، ‎"-L"‎ خود لینک را بررسی می‌کند، و ‎"-e"‎ جایی که لینک به آن اشاره می‌کند را بررسی می‌کند.

POSIX به طور مشابهی دارای همین بررسی‌ها می‌باشد، بنابراین اگر بنا به دلایلی شما نمی‌توانید از فرمان(ارجح) ‎[[ استفاده کنید، همان بررسی می‌تواند با استفاده ازفرمان قدیمی‌تر ‎[‎ انجام بشود:

# POSIX
if [ -L "$name" ] && [ ! -e "$name" ]
then echo "$name is a dangling symlink"
fi


CategoryShell

پرسش و پاسخ 97 (آخرین ویرایش ‎2012-01-13 09:52:29‎ توسط ght)