আমার কাছে একটি ফাইলের মধ্যে নিম্নলিখিত কোড রয়েছে যা zsh এবং ব্যাশ উভয় দ্বারা উত্সাহিত।
if test $SHELLNAME = zsh ; then
lss() { l -l ${1:-.}/*(s,S,t); }
laf() { l ${1:-.}/.*(.); }
lad() { l -d ${1:-.}/.*(/); }
lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }
fi
SHELLNAMEহয় zshযদি শেল zsh এবং bashযদি শেল ব্যাশ হয়।
উপরের প্রতিটি ফাংশনটিতে কোড রয়েছে যা zsh এর সাথে কাজ করে তবে বাশ নয়।
আমি যখন এই ফাইলটি উত্স করি, আমি নিম্নলিখিত ত্রুটিগুলি পাই।
bash: <filename>: line 67: syntax error near unexpected token `('
bash: <filename>: line 67: ` lss() { l -l ${1:-.}/*(s,S,t); }'
এই মুহুর্তে, আমি evalব্যাশের সিনট্যাক্স পরীক্ষাটি বাইপাস করতে ব্যবহার করছি ।
if test $SHELLNAME = zsh ; then
# Using eval makes sure bash can't try to syntax-check these functions.
eval 'lss() { l -l ${1:-.}/*(s,S,t); }'
eval 'laf() { l ${1:-.}/.*(.); }'
eval 'lad() { l -d ${1:-.}/.*(/); }'
eval 'lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }'
fi
এই সমস্যার আরও ভাল সমাধান কি আছে? (সম্ভবত এটি ব্যবহার করে না eval)