我有一個問題,我想手動確定文件夾名稱。例如,如果用戶按如下方式運行此腳本,爲shell腳本提供參數和幫助部分
./scriptname -k
它們可以取得結果,但文件夾名稱是在腳本中確定的。我如何手動確定文件夾名稱?
我有一個問題,我想手動確定文件夾名稱。例如,如果用戶按如下方式運行此腳本,爲shell腳本提供參數和幫助部分
./scriptname -k
它們可以取得結果,但文件夾名稱是在腳本中確定的。我如何手動確定文件夾名稱?
你可以寫的幫助作爲一個函數:
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
#!/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 $*
昨天我刪除了一個未經考驗的答案,並返回今天這個測試的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 $*
運行'find'是反覆可能是實施這個最糟糕的可能方式。 '對於我在$ dir1/*;做測試-e「$ dir2/$ {i#$ dir1 /}」||繼續;回聲「$我」;完成' – tripleee
另外爲什麼你有'-d'選項?根據你的描述,這裏沒有什麼是可選的。 – tripleee
-d選項檢查目錄,建議使用一些其他字母表,如在我的文章中編輯的-f – suhas