私のスクリプトで3つ以上の引数を取ることができる問題があります。私のスクリプトは、例えば、このようなコマンドになります:Bashで複数のコマンドライン引数を処理する方法は?
./myscript.sh -i -v -r filename
をこれまでのところ、それは2つのだけの引数に加えて、ファイル名を取る場合:
./myscript.sh -i -v filename
私は完全なコマンドを実行すると、[-i] [-v] [-r]
ことができますこのエラー...
"mv:無効なオプション - 'r' 詳細については、 'mv --help'を試してください。ここ
は、これまでの私のコードです....
#!/bin/bash
dirfile='.trash'
verbose=
function helpfunction()
{
echo "=============== HELP COMMAND ============="
echo ""
echo "-h | --help"
echo "-i | --interactive"
echo "-v | --verbose"
echo "-r | --recursive"
echo ""
}
if [ $# -eq 0 ]; then
echo "no commands"
exit 1
fi
option="${1}"
case ${option} in
-h | --help)
helpfunction
exit
;;
#interactive -i or --interactive
-i) FILE="${*}"
echo "File name is $FILE"
echo -n "Do you want to remove this file (y/n)? "
read answer
if echo "$answer" | grep -iq "^y" ;then
mv $FILE $dirfile
fi
;;
#verbose -v or --verbose
-v) FILE="${*}"
if [ -f "$FILE" ]; then
-v $FILE
fi
;;
#recursive -r or --recursive
-r) FILE="${*}"
if [ -d "${*}" ]; then
rm -r "$FILE"
fi
;;
#unremove -u or --unremove
-u) FILE="${*}"
for file in $dirfile*;
do
if [[ -f $file ]]; then
echo "file found"
else
echo "File not found"
fi
done
;;
#list -l or --list
-l) FILE="${*}"
for entry in "$dirfile"/*
do
echo "$entry"
done
;;
*)
echo "`basename ${0}`:usage: [-f file] | [-d directory]"
exit 1 # Command to come out of the program with status 1
;;
esac
リストの最初に必要なエントリを作成します – soft87
どのようにしてですか?私はシェルスクリプトの初心者です。 –
最初の引数はファイル名($ 1) – soft87