私はシェルに比較的新しい人です(今は基本だけを知っています)。私はバグを修正するためにスクリプトを理解しようとしていますが、私は誤って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-doc
info
また、システムには、スタンドアロンコマンドや[
他test
の種類のシェルやシェル以外のもので使用できる同様のインタフェースを持つコマンドがあることが多く、コマンドを実行するためにシェルを使用しません(たとえばenv
... find -exec
)。文書はinfo test
またはman test
(man '['
おそらく)にあります。
特に、-r
オペレータは、コマンドを実行するプロセス[
(組み込みシェル[
)で指定されたファイルを開く権限があるかどうかをテストします。読む。 true の場合、[
コマンドは以下を返します。成功if
ステートメントのこの部分が実行された場合の終了状態ですthen
。
access(argv[1], R_OK)
これはCの状況と同じです。