我已經看到了如何使用getopts
例子很多。但是我知道bash的基本知識,而且我無法在我的情況下實施它。我真的很感激,如果有人能告訴我模板。如何在bash中使用getopts來解析腳本參數?
我有一個腳本,至少有和最大輸入。這裏是一個簡要說明:
script.sh -P passDir -S shadowDir -G groupDir -p password -s shadow
用戶必須爲-P -S -G
提供參數,如果不是我必須顯示的使用和關閉程序。如果提供參數,我需要將它們保存到適當的變量中。
但-p
和-s
是可選的。然而,如果沒有-p
我應該做一些任務,如果沒有-s
我應該做一些其他任務,如果沒有他們的存在是我應該做一些其他任務。 下面是我到目前爲止寫,但在for循環它的股票。
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "Only root may add a user to system"
exit 2
else
usage() { echo "Usage: $0 [-P <password file path>] [-S <shadow file path>] [-G <group path>]" 1>&2; exit 1; }
passDir=""
shadowDir=""
groupDir=""
while getopts ":P:S:G:" inp; do
case "${inp}" in
P)
$passDir = ${OPTARG};;
S)
$shadowDir = ${OPTARG};;
G)
$groupDir = ${OPTARG};;
*)
usage;;
esac
done
echo "${passDir}"
echo "${shadowDir}"
echo "g = ${groupDir}"
fi
此刻用戶不輸入參數什麼都不會顯示,如果有參數它會進入一個循環!
感謝您的回答。我很感激。我選擇了其他答案作爲解決方案,因爲它解釋了-s和-p的解決方案並未提供。再次感謝 – Bernard 2014-09-13 18:42:38
@Bernard:現在你必須添加'-p密碼'和'-s陰影'的例子。不要忘記寫一個有用的使用信息。 – 2014-09-13 23:02:01