スクリプトの助けが必要で、コマンドラインで実行されますが、スクリプト内では実行されません。

スクリプトの助けが必要で、コマンドラインで実行されますが、スクリプト内では実行されません。

したがって、コマンドラインから実行すると、次のコマンドが実行されますが、bashスクリプトにこのエラーが表示されます。

sudo -u $usr rm -rf "${htmldir}"/!("awstatsicons"|"awstats-icon"|"icon"|"roundcube"|"phpmyadmin"|"stats"|"htusers")

bashスクリプトの上の行に「shopt -s extglob」を指定しました。コマンドラインにusr変数とhtmldir変数を追加し、「shopt -s extglob」を設定し、その行を正確にコピーすると、期待どおりに機能します。ただし、スクリプトで実行すると、次のエラーが発生します。

syntax error near unexpected token `('

いくつかの順列を試しましたが、うまくいきませんでした。どんな助けでも大変感謝します。

答え1

解釈のためにシェルをインタラクティブにする必要がありますhistory -p!数値:

#!/bin/bash -i
eval $(history -p <your statement involving ! expansion>)

シェルスクリプトを呼び出す前に履歴を保存する必要があります。

history -a

例:

cat jt
#!/bin/bash -i
eval `history -p !df`

df /; history -a
./jt

答え2

さて、基本的に私の問題の一部を投稿しました。しかし、@alecxsは正しいです。問題を引き起こす隠し文字または「スペース」があるものが必要です。私は入り、すべての「空白」行を削除し、各行で最後に見える文字の後のすべての項目が削除されたことを確認しました。その後、スクリプトを実行すると、すべてがうまく動作します。もう一度ありがとう @alecxs

関連情報