2015-10-30 106 views
0

我正在編寫一個shell腳本,在這裏我想獲取文件最近24小時文件目錄的更改。我這樣做象下面這樣:在shell變量中保留grep輸出

for myfile in $(find . -maxdepth 1 -mtime -1) 
    do 
     echo $myfile|sed 's/.//'| sed 's/.//'|grep -v "^$"; 
    done 

所以,現在我想保持的$myfile|sed 's/.//'| sed 's/.//'|grep -v "^$";輸出的shell變量,並希望傳遞給另一個bash函數。我嘗試它如下:

for myfile in $(find . -maxdepth 1 -mtime -1) 
     do 
      latest_file=$($myfile|sed 's/.//'| sed 's/.//'|grep -v "^$"); 
     done 

而我得到bash: .: filename argument required錯誤。

我做錯了什麼? 在此先感謝。

回答

0

您添加$(...)時取出echo#!的/ usr/bin中/ perl的

latest_file=$(echo $myfile | sed 's/..//' | grep -v "^$") 
#    ~~~~ 

還要注意的是sed 's/.//' | sed 's/.//'相當於sed 's/..//這是更快。您也可以嘗試cut -c3-(即顯示第三個字符的每一行)。

+0

嗯沒有想到這一點!回聲是印刷人員STDOUT這就是爲什麼我沒有保留它時分配一個變量。 –

+0

@AlexBenz:這裏的STDOUT通過'|'到'sed'的STDIN。 – choroba

+0

啊!知道了謝謝 :) –