フラグを持つユーザー名を取得する必要のあるbashスクリプトがあります。次に、-rまたは-wを探して、これを読んだり書いたりする。フラグの存在のみをテストするためのBashスクリプト
現在、私はget optsを使用していますが、実際の引数を-rと-wに渡す必要があります。
これらのフラグに何かを渡すことなく、-rまたは-wだけが存在するかどうかをテストするにはどうすればよいですか。
現在、私のスクリプトは次のようになります。
#!/bin/bash
while getopts :u:r:w: opt; do
case $opt in
u) user="$OPTARG" ;;
r) my_read=1 ;;
w) my_write=1 ;;
\?) echo "${0##*/}" [ -erw ]; exit 1 ;;
esac
done
if [[ ${my_write} -eq 1 ]] ; then
echo "write"
fi
if [[ ${my_read} -eq 1 ]] ; then
echo "read"
fi
あなたのオプションが引数を取らないようにするには、それらの後に ':' sigilを使わないでください。あなたの現在のコードは*明示的に* '-r'を指示し、' -w'は 'OPTARG'に次の単語を入れます。 –
ああ、私はそれが今問題だったと思う。 if文を変更して、そのフラグがコマンドラインで入力されたかどうかを確認するにはどうすればよいですか? –
を参照してください。 https://stackoverflow.com/a/16496491/297323 '-z'はあなたの友人です –