শেল স্ক্রিপ্টে scp এবং লাইন ব্রেক


3

আমার কাছে একটি .shফাইল রয়েছে, এতে একটি কমান্ড রয়েছে যা দূরবর্তী সার্ভার থেকে একটি নির্দিষ্ট ডিরেক্টরিতে একটি ফাইল অনুলিপি করে, মূল ফাইলের নাম সংরক্ষণ করে এবং দ্বিতীয় লাইনটি কেবল একটি মন্তব্য:

scp (host):~/filename.sql ~/
# just a comment

আমি স্ক্রিপ্টটির নাম রাখি dbcopy.sh, এটি আমার হোম ডিরেক্টরিতে রেখেছি এবং এটি কনসোল থেকে চালিত করে:

sh ~/dbcopy.sh

সমস্যাটি কারণ scp কমান্ড অনুসরণ করে একটি লাইন বিরতি, অনুলিপি করা ফাইলটির একটি মূল নাম পরিবর্তে একটি অক্ষর নিয়ে গঠিত (নীচের তালিকায় এটি একটি প্রশ্ন চিহ্ন হিসাবে প্রদর্শিত হয়) থাকে!

console> ls -l ~
...
-rw-rw-r--  1 (user)  (group)   158327960 26 oct 17:28 ?

scpকমান্ডের পরে যদি আমি কোনও লাইন ব্রেকগুলি সরিয়ে ফেলি তবে প্রত্যাশা অনুযায়ী সবকিছু কাজ করে।

এই পরিস্থিতিটি আমি কীভাবে পরিচালনা করব?


শেল স্ক্রিপ্টে আপনার যা আছে ঠিক কীভাবে আপনি পোস্ট করতে পারেন এবং কীভাবে আপনি স্ক্রিপ্টটি চালাচ্ছেন?
টাইগার

@ টিগার, আমি মূল প্রশ্নটি আপডেট করেছি এবং শেল স্ক্রিপ্ট পোস্ট করেছি। কমান্ডটি অনুসরণ করে লাইন ব্রেক হওয়ায় এটি সমস্যাটি সক্রিয় হয়েছে। আমি প্রথমে এটি আপত্তি করিনি, কারণ প্রাথমিকভাবে আদেশটি অনুসরণ করে যা কেবল একটি মন্তব্য ছিল।
1234ru

আমি বিষয়টি মোটেও প্রতিলিপি করতে পারি না। প্রথমে আমি ভেবেছিলাম হেডারের অভাব #!/bin/shসমস্যা হতে পারে তবে এটি হয় না। আমার পরীক্ষার স্ক্রিপ্ট শিরোনাম ছাড়া এবং ছাড়া কাজ করে। এটি কি ওএস চালু আছে? এছাড়াও, লাইনের echo ~/আগে যুক্ত করলে কী হয় scp?
টাইগার

@ টিগার, আমি এটি বুঝতে পেরেছি। আমার নিজের উত্তরটি আমার কাছে পড়ুন - এটি সত্যই মজাদার হিসাবে প্রমাণিত হয়েছিল: ডি আপনার সহায়তার জন্য আপনাকে ধন্যবাদ!
1234ru

উত্তর:


1

আমার সম্পাদকটিতে ইস্যুটি লাইন এন্ডিং ডিলিমিটারে ছিল: এটি ন্যায়বিচারের \r\nপরিবর্তে ক্রম ব্যবহার করেছিল \n। সুতরাং scpকমান্ডের শেষ যুক্তিটি ঠিক ~/যেমন প্রদর্শিত হয় তেমনটি ছিল না । এটা আসলে ছিল ~/\r

সুতরাং শেষের দিকে স্ল্যাশ সহ ডিরেক্টরিটির একটি ডিরেক্টরি পাস করার পরিবর্তে (যা একটি ডিরেক্টরি ফাইলের নাম সংরক্ষণ করে সেই ডিরেক্টরিতে একটি ফাইল অনুলিপি করতে নির্দেশ দেয়) - স্ল্যাশের পরে আরও কিছু যুক্ত হয়েছিল - একটি \rচরিত্র, যার ফলে কপি করা ফাইলটি নতুন নাম হিসাবে এটি গ্রহণ।


0

আপনি কীভাবে স্ক্রিপ্টটি চালাচ্ছেন সে সম্পর্কে আপনি স্ক্রিপ্ট বা তথ্য অন্তর্ভুক্ত করেননি। আমি জানি না আপনি এটির কোনও cronjobবা অন্য কোনও ব্যবহারকারীর কাছ থেকে কল দিচ্ছেন কিনা ।

এটি বলেছিল, নিম্নলিখিত খুব বেসিক পরীক্ষার স্ক্রিপ্ট (t.sh) নিখরচায় আমার জন্য নিখরচায় কাজ করে ফ্রিবিএসডি তে।

#!/bin/sh
echo "Pre test"
scp spider.goo:~/tColor.c ~/
echo "Post test"

যেমন কল:

sh ./t.sh

নিম্নলিখিত আউটপুট সহ:

Pre test
Password for tigger@spider:
tColor.c       100% 1805     1.8KB/s   00:00    
Post test

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