2017-11-21 16 views
0
#!/bin/bash 
cd /var/www/html/tpd 
cp -pr !(edc|dti|swb|audio|blog|buy|dpt|dpt.git|dpt-staging-server|dti_old|images|images2|images_linkshare|smarty-3.1.30|swb.com|swb.com.temp|talent|template_c|video|yout|yout-admin|All_About_Your_Canine_Friend.pdf|Canine_Cuisine.pdf|definitiveguide.pdf|GroomingYourDogAtHome-FreeReport.pdf|HowToStopYourPuppyOrOlderDogFromBiting.pdf|Network Merchants API.pdf|SuperDogsandPuppies.pdf|TopDogs.pdf|UltimateBreedGuide.pdf|10CommonProblemsofAdultDogs.pdf|10CommonProblemsofPuppies.pdf|45commonlyaskedquestionsondoggrooming.pdf|g.tar.gz|h.tar.gz|dti_back.tar.gz|Canine_Cuisine.zip|deluxe_version.zip|h.zip|StyleXPInstallMale.zip|UltimateBreedGuide.zip|videotranscripts.zip|101ways.zip) weeklyBackup 
tar -cvf weeklyBackup.tar.gz weeklyBackup 
rm -rf weeklyBackup 

私は一部の選択されたファイルだけを週に1回バックアップしています。これは私が使用しているスクリプトです。手動で実行しているとき、それは完璧に動作しますが、私は、これはcrontabのある入っていたとき、それはエラー行3を返します。ここにすべてのヘルプははるかに高く評価された予期しないトークンの近くに構文エラー `(」crontabでcrontabコマンドを使用しているcbコマンド

+0

これは否定できない、それはextglobです。 –

答えて

1

構文です。これは、デフォルトでは有効になっていないのbashにオプションの拡張であり、「extglob」何と呼ばれています

この構文を有効にするには、あなたは(あなたのスクリプト内の前の行として)実行する必要があります。

shopt -s extglob 

おそらく、あなたのドットファイルは、これは対話型のシェルでこれを行います。そのため、シンタックスはすぐに使えます。 (また、スクリプトがsh scriptnameでcronから呼び出された場合は、代わりにbash scriptnameが使用されるか、またはコードがシバンを尊重するように変更されていることを確認してください)。

+0

チャームのように働いた。ありがとう –

+0

しかし、手動で与えるときにこれがなぜ機能していたのですが、問題はcrontabでのみ与えるのですか? –

+0

@nj_Graffiti、私は答えでこう書いています: "おそらく、あなたのドットファイルは対話シェル*のためにこれをしていると思われます。あなたの '.bashrc'や' .bash_profile'にいなくても、まだ '/ etc/profile'とそれが出すファイルがあります。 –

関連する問題