shellスクリプト学習(五)その他


一、getopts
①概要
  • Cはgetopt_がありますlong関数はコマンドラインパラメータを解析するために使用され、shellではgetoptsが使用されます.
  • 一般フォーマット:getopts options variable getoptsは一般的にループで実行され、ループを実行するたびに、getoptsは次のコマンドラインパラメータをチェックし、合法かどうかを判断します.すなわち、パラメータが-で始まるかどうかを確認し、optionsに含まれるアルファベットを後にします.もしそうであれば、一致するオプションアルファベットを指定した変数variableに存在させ、終了状態0を返します.もし-後ろのアルファベットがoptionsに含まれていない場合はvariableに1つ保存しますか?終了ステータス0を返します.コマンドラインにパラメータがない場合、または次のパラメータが-で始まる場合は、0ではない終了状態を返します.
  • #!/bin/bash
     
    while getopts "a:" opt; do
      case $opt in
        a)
          echo "this is -a the arg is ! $OPTARG" 
          ;;
        \?)
          echo "Invalid option: -$OPTARG" 
          ;;
      esac
    done

    ②その他:
  • getoptsでは、-msなどのオプションをスタックできます.
  • パラメータを持つ場合は、対応するオプションの後に:を付けます.この場合、オプションとパラメータの間に少なくとも1つの空白文字が区切られ、このようなオプションはスタックできません.
  • パラメータが必要なオプションの後にパラメータが見つからない場合は、指定された変数に格納されますか?標準エラーにエラーメッセージを書き込みます.それ以外の場合、実際のパラメータを特殊変数:OPTARG
  • に書き込む
  • もう一つの特殊変数:OPTINDは、次の処理するパラメータインデックスを反映し、初期値は1であり、getoptsが実行されるたびに更新される.

  •  
    二、source
  • source filepathこのコマンドは、現在のshellにパスがfilepathのshellファイルを読み込ませ、ファイル内のすべての文を順次実行させます.通常、変更したばかりの初期化ファイルを再実行し、ログアウトして再ログインする必要がなく、すぐに有効にします.たとえば、/etc/profileファイルを変更し、再ログインせずにすぐに有効にしたい場合は、source/etc/profileなどのsourceコマンドを使用します.
  • source filenameは、スクリプト内の文を簡単に読み取るだけで、現在のshellで順次実行され、新しいサブshellは確立されていません.スクリプト内のすべての新しい変数、変更変数の文は、現在のshellに保存されます.

  •  
    三、basenameとdirname
  • basenameはディレクトリを除いた残りの名前
  • です
  • dirnameは取り出しディレクトリ
  • である.
     
    四、export
  • Linux exportコマンドは、環境変数を設定または表示するために使用されます.shellでプログラムを実行すると、shellは環境変数のセットを提供します.exportは、後続の実行プログラムで使用するために環境変数を追加、変更または削除できます.exportの効力は、このログイン操作にのみ及ぶ.
  • 使用:export[-fnp][変数名]=[変数設定値]-fは[変数名]で関数名を表します.-n指定した変数を削除します.変数は実際には削除されませんが、後続の命令の実行環境には出力されません.-pすべてのshell付与プログラムの環境変数をリストします.

  •  
    五、shell-initエラー
  • shellスクリプトで、前にcdでディレクトリに入り、後にそのディレクトリを終了しない前に削除するとエラーが発生します.
  • 一般的なエラープロンプトは、shell-init:error retrieving current directory:getcwd
  • です.