這個腳本是由我的導師寫的,但我不明白。 有人可以請給我解釋一下。瞭解這個unix腳本
#!/bin/bash
find $1 -size +${2}c -size -${3}c
這個腳本假設接受三個命令行參數:目錄名稱,以字節爲單位的最小文件大小和字節最大文件大小。所以當它運行時,它會是這樣的:
./script.sh /home/Desktop/file 5000 10000
然後5000到10000之間的文件大小將被回顯到屏幕。
劑量誰知道另一種方法做同樣的?
這個腳本是由我的導師寫的,但我不明白。 有人可以請給我解釋一下。瞭解這個unix腳本
#!/bin/bash
find $1 -size +${2}c -size -${3}c
這個腳本假設接受三個命令行參數:目錄名稱,以字節爲單位的最小文件大小和字節最大文件大小。所以當它運行時,它會是這樣的:
./script.sh /home/Desktop/file 5000 10000
然後5000到10000之間的文件大小將被回顯到屏幕。
劑量誰知道另一種方法做同樣的?
該腳本按照老師的說法運行。
錯誤"find: Invalid argument +c to -size.
因爲您不通知腳本的第二個參數。然後$ {2}沒有價值和腳本試圖執行:
find your_path -size +$c -size -$c
您可以修改腳本,以check for number or arguments:
#!/bin/bash
EXPECTED_ARGS=3
E_BADARGS=65
HLP_ARG="path min_size max_size"
if [ $# -ne $EXPECTED_ARGS ]
then
echo "Usage: `basename $0` $HLP_ARG"
exit $E_BADARGS
fi
find $1 -size +${2}c -size -${3}c
#!/bin/bash
find $1 -size +${2}c -size -${3}c
|___| |_____| |_____|
| | |
This is the This is This is the
first argument the second third argument
passed while argument
running the
script
find
實用語法是搜索specified path
的文件這可以根據所選的options
進行識別。
-size n[ckMGTP]
True if the file's size, rounded up, in 512-byte blocks is n.
If n is followed by a c, then the primary is true if the
file's size is n bytes (characters).
使用+
在second argument
前面意味着我們正在尋找,然後指定數量的文件greater
。同樣-
表示要顯示的文件應小於指定的大小。
通過將三個參數傳遞給您的腳本,意味着我們將$1
作爲要搜索的路徑,您的情況是/home/Desktop/file
。第二個參數定義了文件應該大於指定參數5000
的條件。最後一個參數是指定文件應該小於指定大小10000
。
希望這會有所幫助!
爲什麼'E_BADARGS = 65'而不是'E_USAGE = 64'? –
您可以自由選擇[退出狀態](http://www.cyberciti.biz/faq/bourne-shell-exit-status-examples/)代碼。 – danihp
而不是要求3個參數,通常設置合理的默認值通常會更好:find $ 1 $ {2 + -size + $ {2} c} $ {3 + -size - $ {3} c} –