スクリプトジョブの引数にパスを渡す方法について

コメント

2件のコメント

  • ハサン

    ご質問ありがとうございます

    ScriptJob はデフォルトで内部的にシェル(/bin/bash)を経由して呼び出されるため、コマンドライン中で引用符で囲まれていないワイルドカード(* など)はシェルによって展開されます。

    例:
    ```
    scriptsample.sh /tmp/test/*.txt
    ```
    この場合、アスタリスクはシェルによって展開され、argv は以下のようになります:
    ```
    /tmp/test/file1.txt /tmp/test/file2.txt …
    ```
    そのため、引数の数はディレクトリ内で一致するファイルの数に応じて変動し、$# は 1, 2, 3 … のように変化します。


    ワイルドカードをリテラル文字列として扱う方法

    シェルに解釈させず、スクリプトにそのまま "/tmp/test/*.txt" を渡したい場合は、アスタリスクをエスケープまたは引用符で囲む必要があります。

    方法1:バックスラッシュを重ねる

    ```jobflow
    [ /kompira/scriptjob/scriptsample: '/tmp/test/\\*.txt' ]
    ```


    方法2:追加の引用符を使う
    ```jobflow
    [ /kompira/scriptjob/scriptsample: "'/tmp/test/*.txt'" ]
    ```

    どちらの場合も、シェルが受け取る引数はリテラル文字列 /tmp/test/*.txt になり、スクリプトは「1つのパラメータ」としてこれを受け取ります。

    どうぞ、よろしくお願いいたします。

    0
    コメントアクション パーマリンク
  • ogre

    どちらの方法でも上手く行くことを確認出来ました。

    ご回答ありがとうございました。

    0
    コメントアクション パーマリンク

サインインしてコメントを残してください。