if [-r "$1"] ;どういう意味ですか?意味は?

if [-r

私はシェルに比較的新しい人です(今は基本だけを知っています)。私はバグを修正するためにスクリプトを理解しようとしていますが、私は誤ってGoogleで答えを見つけることができなかったことを発見しました(おそらく正しいものを検索せずに)。

if [ -r "$1" ] ; 

私は制御フローについて非常によく知っており、これが$1スクリプトに渡されるパラメータであることも知っています。私たちが評価している実際の式が何であるかわかりません。-r

どんな助けでも大変感謝します!

ベストアンサー1

演算子と最初の位置引数(または位置引数が設定されていない場合は空の文字列)の内容を演算子のオペランド(および対称のクロージャ)として[使用してコマンドを実行します。-r-r]

この[コマンドは、Bourneに似たすべてのシェル(およびfish)に組み込まれています。したがって、その文書は通常、そのシェルマニュアルにあります。としても知られていますtest

シェルに応じて、以下を試してください。

  • info zsh test
  • info bash '['
  • fish -c 'help test'
  • またはman ksh/...man dash情報ページがないシェルの場合。

(一部のシステムでは、これらのシェルでドキュメント形式を使用できるようにするか、bash-docパッケージをインストールする必要があります。)zsh-docinfo

また、システムには、スタンドアロンコマンドや[testの種類のシェルやシェル以外のもので使用できる同様のインタフェースを持つコマンドがあることが多く、コマンドを実行するためにシェルを使用しません(たとえばenv... find -exec)。文書はinfo testまたはman testman '['おそらく)にあります。

特に、-rオペレータは、コマンドを実行するプロセス[(組み込みシェル[)で指定されたファイルを開く権限があるかどうかをテストします。読む。 true の場合、[コマンドは以下を返します。成功ifステートメントのこの部分が実行された場合の終了状態ですthen

access(argv[1], R_OK)これはCの状況と同じです。

おすすめ記事