私はUbuntu 16.04(xenial)とBash 4.3.48(1)を使用しています。
Stephen Kittの回答に基づいて今回の会議で、名前付き関数の一部として次のコマンドを実行してみましたimb()
。
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" -
関数のあるファイルを取得しましたimb()
。
source ~/functions.sh
機能
imb() {
drt="/var/www/html"
date="$(date +\%F-\%T)"
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
rm -f "$drt/db-$date.zip"
}
私の質問
zip
次のエラーで関数呼び出しが失敗します。
zip error: Nothing to do! (/var/www/html/db-2018-04-13-22:27:47.zip)
これはハイフンが無視されているために発生するようです。
type -a imb
出力:
imb is a function
imb () {
date="$(date +\%F-\%T)";
mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip";
zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*";
rm -f "$drt/db-$date.zip"
}
ここにハイフンが欠けていることがわかりました。
私の質問
この機能が失敗する理由/ Bashがハイフンを無視するのはなぜですか?
ベストアンサー1
ご使用の環境に以前のバージョンの関数があり、ファイルを編集して欠落しています-
。
ファイルを再インポートするか、シェルを再起動すると、ファイルに表示される関数の正しいバージョンが得られます。そのバージョンが動作します。
これがすべてです。ここで説明する興味深い内容はありません。環境は環境設定ファイルと同期せず、しばしば一時的な混乱を招く非常に一般的な状況ですが、このように簡単に修正できます。