2013-10-14 43 views
-1

我有一個問題,我想手動確定文件夾名稱。例如,如果用戶按如下方式運行此腳本,爲shell腳本提供參數和幫助部分

./scriptname -k 

它們可以取得結果,但文件夾名稱是在腳本中確定的。我如何手動確定文件夾名稱?

+0

運行'find'是反覆可能是實施這個最糟糕的可能方式。 '對於我在$ dir1/*;做測試-e「$ dir2/$ {i#$ dir1 /}」||繼續;回聲「$我」;完成' – tripleee

+1

另外爲什麼你有'-d'選項?根據你的描述,這裏沒有什麼是可選的。 – tripleee

+0

-d選項檢查目錄,建議使用一些其他字母表,如在我的文章中編輯的-f – suhas

回答

1

你可以寫的幫助作爲一個函數:

usage(){ 
cat <<EOT 
Usage: ${0##*/} dir1 dir2 
EOT 
} 

if [ $# -ne 2 ]; then 
    usage 
    echo 'please enter two folder names' 
    exit 1 
fi 

if [ ! -d "$1" ]; then 
    usage 
    echo "$1 is not a folder" 
    exit 1 
fi 

if [ ! -d "$2" ]; then 
    usage 
    echo "$2 is not a folder" 
    exit 1 
fi 

# continue script 
0
#!/bin/bash 

check_input_directories() 
{ 
    if [[ ! -f "${folder1}" "${folder2}" ]]; then 

     #your searching program 

fi 
} 
Show_help() 
{ 

cat <<_EOF 
Usage : $0 <options>  <path> 
      Options: 
       -f  <folder> <folder> 
_EOF 
} 

MAIN() { 

case "$1" in 
         -f) 
           check_input_directories 
         ;; 
         *) 
           Show_help 

esac 

} 

MAIN $* 
+0

檢查編輯的文章並添加您的功能 – suhas

+0

您得到了什麼錯誤,如果您告訴需求有一些細節,我可以幫助您相同 – suhas

0

昨天我刪除了一個未經考驗的答案,並返回今天這個測試的bash腳本:

#!/bin/bash 

check_input_directories() { 

    folder1="$1" 
    folder2="$2" 

    if [[ ! -d "${folder1}" && ! -d "${folder2}" ]]; then 

    dir1=~/${folder1} 
    dir2=~/${folder2} 

    for i in $(find $dir1 -printf "%f\n") 
    do 
     find $dir2 -name $i -print 
    done 

    fi 
} 

Show_help() { 

    cat <<_EOF 
    Usage : $0 <options>  <path> 
    You can use this script as below, 
    -d  folder1/ folder2/ 
    _EOF 
} 

MAIN() { 
    case "$1" in 
    -d) 
     check_input_directories $2 $3 
     ;; 
    *) 
     Show_help 
    esac 
} 

MAIN $*