いくつかのパラメータを含むスクリプトを作成しているので、使用していますが、getopts
1つのパラメータで問題を解決したいと思います。
たとえば、スイッチを使用し、必要な-d
パラメータ-d
はディレクトリパスです./work
。
数値ではなく、ユーザーが入力した文字列またはパスをテストしたいと思います。この問題を解決する方法はありますか?次のように解決したいと思います。
If (test)
then echo it is string
else
echo it is not string
答え1
各変数は文字列です。
「数字です」と「数字ではありません」を区別するには、テストしてみてください。
while getopts d: OPTLET; do
case "$OPTLET" in
d)
case "$OPTARG" in
*[!0-9]*) echo 1>&2 "Non-numeric argument to -d, stopping."; exit 2;;
*) number_of_foo=$OPTARG;;
esac;;
esac
done
これはあなたが本当に欲しいものであるかどうかあなたの質問では明確ではありません。数字はい文字列。123
有効なファイル名です。したがって、引数が-d
潜在的なファイル名であると仮定すると、検証は不要です。すべての文字シーケンスは、潜在的に有効なファイル名です。