1

最近 UNIX を使い始めたばかりで、getopts の実装に問題があります。

以下の関数は、ファイルを見つけてごみ箱に削除します。移動後にメッセージを表示する -i を指定して getopts を使用しようとしています。構文は正常に機能しますが、getotps コマンドで while ループを実装すると機能しなくなります。

誰でも有益なアドバイスをいただけますか?

function moveToBin(){

while getopts i opt
do
   case $opt in
   i) echo "file removed!" ;;
esac
done

if [[ -e $1 ]]; then
   inode=$(ls -i  $i | cut -d " " -f1)
   name=$1_$inode
   pathOfFile=$(pwd $1)
   restoreEntry=$1_$inode:$pathOfFile/$1

        mv $1 ~/deleted
        mv ~/deleted/$1 ~/deleted/$name
            echo "Before extension code"
               extension=$(find ~ -inum $inode)
 fi
4

1 に答える 1

1
while getopts ...; do
  ...
done

getopts は、オプションとその可能な引数を解析します。-最初の非オプション引数 (その前にあるオプションの引数ではないハイフン () で始まらない文字列) で解析を停止します。--オプションの終わりを意味する (2 つのハイフン) が表示されると、解析も停止します。

于 2013-09-15T16:32:10.530 に答える