এর পরে প্রথম যুক্তি sh -c inline-script
যায় $0
(যা ত্রুটির বার্তাগুলির জন্যও ব্যবহৃত হয়), এবং বাকীগুলি ভিতরে যায় $1
, $2
...
$ sh -c 'blah; echo "$0"; echo "$1"' my-inline-script arg
my-inline-script: blah: command not found
my-inline-script
arg
তাহলে তুমি চাও:
sh -c 'find "$1"' sh /tmp
(পুরানো দিনগুলিতে, আপনি sh
প্রয়োগগুলি সন্ধান করতে পারেন যেখানে $1
পরিবর্তে প্রথম আরগটি প্রবেশ করেছিল , তাই আপনি এটি করবেন:
sh -c 'find "$1"' /tmp /tmp
বা:
sh -c 'shift "$2"; find "$@"' sh 3 2 /tmp1 /tmp2
উভয় আচরণের জন্য অ্যাকাউন্ট করতে, কিন্তু পসিক্স প্রচলিত এবং প্রকাশ্যে উপলভ্য যে শেলগুলি এখন চলে গেছে)।
আপনি সেট করতে চান তাহলে $1
, $2
বর্তমান শেল মধ্যে একটি স্থানীয় সুযোগ, আপনি ফাংশন ব্যবহার করতে চাই কোথায়। বোর্নের মতো শেলগুলিতে:
my_func() {
find "$1"
}
my_func /tmp
কিছু শেল বেনামে ফাংশন সমর্থন করে। এটি এরকম zsh
:
(){find "$1"} /tmp
বা es
:
@{find $1} /tmp
স্থায়ীভাবে বর্তমান অবস্থানিক পরামিতিগুলি পরিবর্তন করতে সিনট্যাক্সটি শেল নির্ভর। dchirikov ইতিমধ্যে আবৃত করেছে বোর্ন মত শাঁস (বোর্ন, Korn থেকে, bash
, zsh
, POSIX, ash
, yash
...)।
বাক্য গঠনটি হ'ল:
set arg1 arg2 ... argn
তবে আপনার প্রয়োজন:
set --
সেই তালিকাটি খালি করতে (বা shift "$#"
) এবং
set -- -foo
সেটে $1
দিয়ে শুরু কিছু -
বা +
, তাই এটি একটি ভাল অভ্যাস সবসময় ব্যবহার করেন set --
, বিশেষ করে যখন যেমন নির্বিচারে ডেটা ব্যবহার set -- "$@" other-arg
অবস্থানগত প্যারামিটার তালিকার শেষে আর্গুমেন্ট যোগ করতে।
csh
পরিবারের শেলগুলিতে ( csh
, tcsh
), আপনি argv
অ্যারে নিয়োগ করে :
set argv=(arg1 arg2)
এর শাঁস সালে rc
পরিবারের সাথে ( rc
, es
, akanga
), এর *
অ্যারে:
*=(arg1 arg2)
যদিও আপনি স্বতন্ত্রভাবে উপাদানগুলি বরাদ্দ করতে পারেন:
2=arg2
ইন fish
, অবস্থানগত পরামিতিগুলি কেবলargv
অ্যারেতে থাকে (না , সেখানে):$1
$@
set argv arg1 arg2
ইন zsh
, সাথে সামঞ্জস্যের জন্য csh
, আপনি argv
অ্যারেতেও নিয়োগ করতে পারেন :
argv=(arg1 arg2)
argv[4]=arg4
এবং আপনি এটি করতে পারেন:
5=arg5
এর অর্থ আপনি এই জাতীয় জিনিসগুলিও করতে পারেন:
argv+=(another-arg)
শেষ পর্যন্ত যুক্তি যুক্ত করতে এবং:
argv[-1]=()
argv[2]=()
শেষ বা মাঝ থেকে কোনও যুক্তি সরাতে, যা আপনি সহজেই অন্যান্য শাঁস দিয়ে করতে পারবেন না।
(find $1) /tmp
একটি সিনট্যাক্স ত্রুটি। আসলে(any-command) more-arguments
একটি বাক্য গঠন ত্রুটি। আপনি যা করার চেষ্টা করছেন তা কি আলাদাভাবে ব্যাখ্যা করতে পারেন?