端末でこのzsh linkコマンドを実行します。
cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10])
これはうまく機能し、期待どおりにそのディレクトリを削除します。
ただし、スクリプトに入れると、次のエラーが発生します。
syntax error near unexpected token `('
いくつかの調査を行った結果、シェルスクリプトでこれを設定する必要があるようです。
setopt extended_glob
ただし、スクリプトの上部に対応する行を追加すると、独自のエラーが発生します。
setopt: command not found
だからここで私が何を間違っているのか、どうすれば解決するのかわかりません。
答え1
スクリプトがによって解釈される必要があることをシステムに通知するには、スクリプトにシェーバンを追加する必要があります。zsh
それ以外の場合は、次のように解釈されます。sh
#! /bin/zsh -
cd /path/to/backups/pod3 && rm -rf ./*(Om[1,-10])
/bin/zsh
実行可能ファイルの物理パスに変更するzsh
か、she-bang 行全体を次のように変更します。
#! /usr/bin/env zsh
zsh
照会に使用するパス$PATH
(ほとんどのシステムにenv
コマンドがあると仮定/usr/bin
)。