আমার ক্রোনজব সিনট্যাক্সটিতে কী সমস্যা হয়েছে, আমি ব্যাকটিক (`) ব্যবহার করার চেষ্টা করছি?


31

আমি যা স্বয়ংক্রিয় করতে চাই তা এখানে:

00 08 * * * psql -Uuser database < query.sql | mail somone@null.com -s "query for `date +%Y-%m-%dZ%I:%M`"

ত্রুটি বার্তাটি এখানে:

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file

2
প্রদত্ত ত্রুটি বাদে এটিকে স্কেল স্ক্রিপ্টে রাখার কথা বিবেচনা করুন। এটি ক্রন্টবকে আনাড়ি বলে ভান করবে এবং আপনি আপনার স্ক্রিপ্ট ফাইলে মন্তব্য এবং কনফিগার করতে পারেন।
পিটারএমএম

উত্তর:


67

ক্রোনটব থেকে (5) :

`` '' '' ক্ষেত্র (বাকী রেখাটি) চালানোর জন্য আদেশটি নির্দিষ্ট করে। লাইনের পুরো কমান্ড অংশ, একটি নতুন লাইন বা% অক্ষর অবধি, / বিন / শি দ্বারা বা ক্রন্টব ফাইলের শেল ভেরিয়েবলে নির্দিষ্ট শেল দ্বারা সম্পাদন করা হবে। কমান্ডের শতকরা চিহ্ন (%), ব্যাকস্ল্যাশ () দিয়ে অব্যাহতি না হলে নতুন লাইন অক্ষরে পরিবর্তিত হবে এবং প্রথম% এর পরে সমস্ত ডেটা স্ট্যান্ডার্ড ইনপুট হিসাবে কমান্ডে প্রেরণ করা হবে। একক কমান্ড লাইন একাধিক লাইনে বিভক্ত করার কোনও উপায় নেই, যেমন শেলের ট্রেলিং "\"।

% চিহ্নের আগে কেবল ব্যাকস্ল্যাশ যুক্ত করুন:

00 08 * * * psql -Uuser database < query.sql | mail somone@null.com -s "query for `date +\%Y-\%m-\%dZ\%I:\%M`"

8

সমস্যাটি সমাধান করতে আপনার% অক্ষরগুলি এড়িয়ে চলুনdate +%Y-%m-%dহতে হবেdate +\%Y-\%m-\%d

দুর্ভাগ্যক্রমে এই উত্তরটি একটু দেরিতে হলেও সমস্যাগুলি পাঠ বা ব্যাকটিক্স নয় - সমস্যাটি কেবল এই যে শতাংশের অক্ষর '%' একটি বিশেষ চরিত্র যা কোনও নিউলাইন বা কোনও এসটিডিএন ক্রন্টব এন্ট্রিতে বোঝাতে ব্যবহৃত হয়

dateকমান্ডের ফর্ম্যাটিং ইনপুটটির সাথে এটি দ্বন্দ্ব । যেমন একটি কমান্ড অন্তর্ভুক্ত রয়েছে: date +%Y-%m-%dএটি ব্যাখ্যা করা হবে:

date Y- m- d


4

ব্যাকটিক্স নিয়েও আমার অনেক সমস্যা ছিল। কখনও কখনও আপনার উদ্ধৃতি এবং ব্যাকটিক্সের একাধিক ঘটনা প্রয়োজন। কেবল তাদের ()) এর জন্য প্রতিস্থাপন করুন।

উদাহরণ:

export NOW=`date`
by
export NOW=$(date)

-গিলসন সোয়ারস


1
+1 এটি আজকাল যাইহোক পছন্দসই সিনট্যাক্স।
ড্যান কারলি

4
তবে ব্যবহারকারীর প্রশ্নের সাথে এর কোনও যোগসূত্র নেই।
অ্যারন ব্রাউন

1
অবশ্যই এটি ব্যাকস্টিক সম্পর্কে, আবার প্রশ্ন পড়ুন।
সেরজিও

ধন্যবাদ, ব্যাকটিকগুলি আমার ক্রোনগুলি ভেঙে ফেলছে বুঝতে পেরে আমাকে কিছুটা সময় লেগেছে - আমি এখন আমার সমস্ত স্ক্রিপ্টে $ () ব্যবহার করতে শুরু করেছি
এরিক কিগাথি

-2

ব্যাকস্টিকের সাথে এর কোনও যোগসূত্র নেই। একটি ভয়ানক বিষয় হ'ল যে ক্রোন পাঠকে দেখেন না এবং আপনি ক্রোনকে "পাঠ কি?" ক্রোন স্ক্রিপ্টগুলিতে এবং উপরের দিকে।

PATH=/bin:/usr/bin:/usr/sbin
* * * * * /your/script/here

এবং আমি ক্রোন লাইনে কমান্ডটি আক্ষরিক অর্থে পাস করার পরিবর্তে একটি ফাইলে কমান্ড লেখার পক্ষে। এটি থাকা অনেক বেশি মার্জিত

* * * * * /your/script/here

চেয়ে

* * * * * perl -e '$@#$@$%%@' | grep -e '@#$@$#$@' | sed s/asfdf/asdfa/

এই লাইনটি একটি ফাইলের মধ্যে যেতে পারে, chmod + x ফাইল, এবং এই ফাইলটি চাওয়া হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.