ฉันมีรหัสต่อไปนี้ในไฟล์ที่มาจากทั้ง zsh และ bash
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
เพื่อหลีกเลี่ยงการตรวจสอบไวยากรณ์ของ bash
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
)