2015-10-25 351 views
-3
#!/bin/bash 
if test $# -ne 2 
    then 
    echo "Error : Invalid number of arguments" 
else 
    if [ -d $1 ] 
    then 
    if [[ $2 =~ ^[0-9]+$ ]] 
    then 
     ls -l $1 | while read line 
     do 
     eval "echo $line | cut -d' ' -f5" | while read ln 
     do 
      if [[ $ln -gt $2 ]] 
      then 
      echo $line 
      fi 
     done 
     done 
    else 
     echo $2" is not a integer" 
    fi 
    else 
     echo "The repertory "$1" does not exist " 
    fi 
fi 

問題是使cpp發​​揮作用就像命令cp。如果我們不給出2個參數,它應該正確反應的腳本。我不明白這個腳本在第10行做了什麼。Shell:這個腳本是做什麼的?

此代碼爲本帖子的以下內容Explain me 2 lines of this shell script

感謝

+2

我可能是錯的,但我認爲如果你一直這樣問這樣的問題,你可能會濫用SO系統。 – 4ae1e1

+0

對不起,如果我不正確,但我對這個腳本的真正作用感到困惑。在我看來,他沒有回答所問的問題...... – Alba

+0

@Alba,...但StackOverflow的重點是構建問答知識庫。這不是一般的論壇;應該以這樣的方式提出問題,以便對其他人以及提問者有所幫助,不僅在提問時,而且在將來也如此。這些問題沒有爲此目的而有效制定。 –

回答

0

沒有通過線通過代碼行的工作,並解釋它,我想指出你http://explainshell.com,這需要的shell代碼行和每個參數提出評論從手動。

E.g,這是線12上方的部分:http://explainshell.com/explain?cmd=echo+%24line+%7C+cut+-d%27+%27+-f5

它應該幫助您通過它去一行一行地制定出到底是怎麼回事。

+0

最後我想我的問題是她:eval「echo $ line | cut -d''-f5」|同時閱讀ln – Alba

+0

我不確定,但我認爲這個腳本不回答問題 – Alba

0

言語:它從目錄$1中選擇ls -l的行,其大小大於$2

如果代碼是在一個名爲script.sh,它被稱爲像:

$ ./script.sh /home/user 130000 

它會打印出其尺寸的ls -l /home/user所有行大於130000

我做不知道爲什麼在EVAL:

eval "echo $line | cut -d' ' -f5" | while read ln 

該生產線將工作一樣:

echo $line | cut -d' ' -f5 | while read ln