に実行するコマンドの前に私は、crontabファイルを見て、次のエントリを見つけた:意味は、crontabエントリ
30 05 * * * /bin/zsh -ls % MyScript.sh myConfigFile.ini
このエントリは明らかにmyConfigFile.ini
とMyScript.sh
などを実行します引数はzsh
ですが、ここでは-ls %
の意味は何ですか?
に実行するコマンドの前に私は、crontabファイルを見て、次のエントリを見つけた:意味は、crontabエントリ
30 05 * * * /bin/zsh -ls % MyScript.sh myConfigFile.ini
このエントリは明らかにmyConfigFile.ini
とMyScript.sh
などを実行します引数はzsh
ですが、ここでは-ls %
の意味は何ですか?
実際にはMyScript.sh myConfigFile.ini
を実際に実行しますが、見た目ほど明白ではありません。
-ls
は-l -s
の略です。これらのパラメータは、
-l
はそれがログインシェルになることですzshのを伝えるオプションLOGIN
を、可能zshの中で特定のオプションを有効にします。これはまた、初期化時に~/.zprofile
エンド/etc/zprofile
(または一部のシステムでは/etc/zsh/zprofile
)が読み込まれ、終了時に~/.zlogout
および/etc/zlogout
が読み取られることを意味します。-s
は、オプションSHIN_STDIN
を有効にします。これは、コマンドが-c COMMAND
で指定され、スクリプトが指定されていない場合、からコマンドを読み取るためにzshにSTDINを指定します。 -s
を明示的に設定すると、コマンドラインからのスクリプトの取得も無効になります。通常、ファイルとして取られる引数は、通常の位置パラメータとして使用されます(つまり、起動されたシェルセッション内では、配列[email protected]
および$*
、スカラーパラメータ$1
、$2
)で使用できます。zsh -ls % MyScript.sh myConfigFile.ini
はそれぞれ、%
、MyScript.sh
とmyConfigFile.ini
にパラメータ$1
、$2
と$3
セットでzshのログインシェルを起動します。 ではなくが実行MyScript.sh
となり、代わりにSTDINから入力を待つことになります。
これはcrontabの中にあります。コマンド内の%
は、\
でエスケープしない限り、特別な意味を持ちます。最初の%
の後のすべてがコマンドの標準入力として送信されます。さらに%
は改行文字に置き換えられます。
cron
(またはそのスタンドでは)このcrontabエントリ
30 05 * * * /bin/zsh -ls % MyScript.sh myConfigFile.ini
を実行するときに組み合わせて、それがSTDINに入力を待つだろうログインシェルとしてzsh
を開始します。 cron
はMyScript.sh myConfigFile.ini
をSTDINとしてシェルに送信します。それは(だけではなくMyScript.sh myConfigFile.ini
または多分/path/to/MyScript.sh myConfigFile.ini
の)このように行われていたのはなぜ
は、より詳細な情報なしに伝えるのは難しいです。 MyScript.sh
はzshのスクリプトの購入は本当に何か実行可能かもしれないということを覚えておいてください。したがって、MyScript.sh
には、環境設定が~/.zprofile
である必要があります。