簡體   English   中英

使用Perl檢查〜/中是否存在目錄

[英]Check if directory exists in ~/ using Perl

我注意到-d標志的奇怪行為,以檢查文件是否是目錄以及目錄是否存在。 使用~/my_dir作為我的路徑時,它的行為有所不同。

以下代碼將返回false,即使目錄my_dir存在,但如果我將其更改為完整路徑,如/home/ricky/my_dir ,則if語句將返回true。

#!/usr/bin/perl -w
#
use strict;

if ( -d "~/my_dir") {
    print "Found \n";
}
else {
    print "Not found \n";
}

有什么不同?

~是一個shell快捷方式,用於指示主目錄,perl是未知的。 您必須在此處使用環境變量HOME - 例如使用"$ENV{HOME}/my_dir"

~不是真正的道路。 諸如/bin/bash shell將它擴展為$HOME環境變量的值。 Perl沒有。 所以,你應該使用這樣的東西:

if ( -d "$ENV{HOME}/my_dir" ) {
    ...
}

您也可以通過執行chdir命令來檢查。 如果目錄不存在,則chdir“dir_name”將返回0。 如果目錄存在,則為1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM