亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標題:
perl變量傳入shell命令后提示shell語法錯誤
[打印本頁]
作者:
db_pub
時間:
2014-11-12 11:55
標題:
perl變量傳入shell命令后提示shell語法錯誤
本帖最后由 db_pub 于 2014-11-12 14:17 編輯
有如下要求 取出nfs掛接的所有目錄中剩余空間最大的一個,根據(jù)最大的再取得對應的目錄
在perl中時獲取最大的空間后,根據(jù)空間大小再取得對應掛接目錄是提示如下錯誤
@nfsSize = `df -k | grep ":" | /usr/bin/awk '{print \$4}'`;
@nfsDir = ();
$max = 0;
foreach $arrayTmp (@nfsSize)
{
if($max < $arrayTmp)
{
$max = $arrayTmp;
}
}
@nfsDir = `df -k | grep ':' | grep $max | /usr/bin/awk '{print \$4, \$NF}'`;
print "nfsdir @nfsDir \n";
sh: syntax error at line 2: `|' unexpected
發(fā)現(xiàn)只要在帶有變量的后面在接其他shell命令就會提示shell語法錯誤
作者:
jason680
時間:
2014-11-12 13:25
回復
1#
db_pub
what do you want to do?
說說你想做什么?
X-Y Problem
http://www.72891.cn/forum.p ... mp;fromuid=24785593
作者:
db_pub
時間:
2014-11-12 14:18
回復
2#
jason680
多謝提醒,這個表達的是有點問題,希望大家引以為戒
作者:
db_pub
時間:
2014-11-12 14:49
問題已經(jīng)解決因為在獲取$max的值之后沒有用chomp函數(shù)去掉最后的換行符導致的,下面這樣是正確的
@nfsSize = `df -k | grep ":" | /usr/bin/awk '{print \$4}'`;
@nfsDir = ();
$max = 0;
foreach $arrayTmp (@nfsSize)
{
if($max < $arrayTmp)
{
$max = $arrayTmp;
}
}
chomp $max;
@nfsDir = `df -k | grep ':' | grep $max | /usr/bin/awk '{print \$4, \$NF}'`;
print "nfsdir @nfsDir \n";
作者:
schnell18
時間:
2014-11-13 23:13
回復
1#
db_pub
這段Perl程序居然用了awk,令人匪夷所思。其實這個問題可以這么用Perl干凈利落的搞定:
#!/usr/bin/env perl
use strict;
my @entries;
open (my $fh, "du -k |") or die "Fail to open pipe";
while(<$fh>) {
chomp;
my ($size, $file) = split(/\s+/, $_);
push @entries, [$file, $size];
}
foreach my $entry (sort { $b->[1] <=> $a->[1] } @entries) {
printf "%s\t%d\n", $entry->[0], $entry->[1];
}
復制代碼
或者如果你的操作系統(tǒng)夠新的話,coreutils 7.5 +,可以用G,M,K作單位, 根本不用Perl:
du -sh * | sort -h -r
復制代碼
如果用k的話,在舊一點的系統(tǒng)上(RHEL 5.9)也能用:
du -sk * | sort -n -r
復制代碼
作者:
db_pub
時間:
2014-11-14 15:00
回復
5#
schnell18
謝謝你的回復,所負責的程序以前使用perl寫的,我現(xiàn)在是實現(xiàn)新的功能擴展,F(xiàn)在是邊看perl資料邊做新功能擴展,很是蛋疼啊
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2