Perl的system後使用單引號和雙引號以及其中包含變量的區別

下面通過兩個示例,來更加明瞭的解釋他們的區別:

1. $home  = "/dev";
    $out = system "ls -l $home";(雙引號)
    print "out: $out\n";

output:

    輸出的是/dev文件夾下的內容;

2. $home  = "/dev";
   $out = system 'ls -l $home';(單引號)
   print "out: $out\n";

output:

  輸出的是執行此perl文件時,所在的文件夾下的內容,也就是說$home的值沒被讀取到。


3. $out = system 'ls -l $HOME';(單引號,$HOME是shell變量)
print "out: $out\n";

output:

輸出的是$HOME(/root)文件夾下的目錄,

4. $out = system "ls -l $HOME";(雙引號,這種時候perl會對$HOME進行替換,所以shell將看不到這個變量)
print "out: $out\n";

output:

輸出的是當前文件夾下的目錄內容。

如果使用雙引號的話,可以在前面加反斜槓:

$out = system "ls -l \$HOME";
print "out: $out\n";

總結:對於perl文件中定義的變量,爲了在system中能被正確使用,要使用雙引號;如果爲了shell 變量能被shell讀到,要使用單引號,否則shell看不到美元符號,因爲perl會將它用值替換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章