ফাইল নেমে ফাঁকা স্থান নিয়ে স্ক্রিপ্টে সমস্যা


11

আমি একটি স্ক্রিপ্ট পেয়েছি যা দূরবর্তী হোস্ট থেকে স্থানীয় পর্যন্ত ফিরে আসে p কখনও কখনও ফাইলের নামগুলিতে স্পেস থাকে। scp এর ফাইল নামের ফাঁকা স্থান পছন্দ করে না। কিছু কারণে স্পেসগুলি পরিচালনা করার জন্য আমার প্রচেষ্টা সঠিক স্ক্র্যাপের পথে তৈরি হয়নি।

কোড:

PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH Me@10.1.10.33:/Users/Me/Desktop

ফলাফল স্বরূপ

Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg

উদ্ধৃতিগুলিতে PATH সংযুক্তি "$PATH"একই ত্রুটি দেয়।

পালানো জায়গাগুলির জন্য জায়গাগুলি অদলবদলও কাজ করছে না, যদিও যতদূর আমি বলতে পারি এটি করা উচিত:

ESC_PATH=${PATH/' '/'\ '}

যদিও পালানো পথ মুদ্রণ করে বোঝায় যে সম্পাদনাটি কাজ করেছে:

echo $ESC_PATH
> /var/root/Documents/MyFile\ OG-v1.2.3.pkg

4
$PATHআপনার নিজস্ব ভেরিয়েবলগুলির জন্য দয়া করে ব্যবহার করবেন না কারণ আপনার টার্মিনালের এটির প্রয়োজন।
বার্নহার্ড

উত্তর:


19

আপনার ঘোষণা এবং ব্যবহার উভয়ই উদ্ধৃত করা উচিত

path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" Me@10.1.10.33:/Users/Me/Desktop

আপনি যদি প্রথমটি উদ্ধৃত না করেন তবে $pathকেবল প্রথম অংশটি থাকবে। আপনি যদি দ্বিতীয়টি উদ্ধৃতি না দিয়ে থাকেন তবে scpপ্রতিটি স্থান-বিচ্ছিন্ন অংশকে আর্গুমেন্ট হিসাবে বিবেচনা করবেন।

(আমি পরিবর্তন করেছি $PATHকরার $pathকারণ $PATHএকটি গুরুত্বপূর্ণ সংরক্ষিত পরিবর্তনশীল এবং আপনি সাধারণ উদ্দেশ্যে এটি ব্যবহার করা উচিত নয়।)


1
পারফেক্ট! থ্যাঙ্কস মিলিয়ন @ মাত্তিও দেখা যাচ্ছে যে এটির মধ্যে একটি রেঞ্চ নিক্ষেপ করার জন্য একটি পূর্বনির্ধারিত স্থানও ছিল।
মাইলস অ্যালডেন

1

আমি ssh এর সাথে খুব অনুরূপ কিছু চেষ্টা করছিলাম এবং এর মাধ্যমে একটি কমান্ড লাইনটি পাস করছিলাম। যেমন

ssh <somehost> ls -l "$PATH"

আমি দেখতে পেয়েছি যে কেবল "$ PATH" সংজ্ঞাটি কৌশলটি করেনি - এটি এখনও ত্রুটিগুলি ছুঁড়ে দিয়েছে। তবে আমি যদি দৌড়ে যাই

ssh <somehost> ls -l "\"$PATH"\"

এটি কাজ করে। কৌশলটি হ'ল শেল থেকে ssh কমান্ডের একটি অতিরিক্ত সেট "" প্রেরণ করা নিশ্চিত করা।

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