ฉันมีเชลล์สคริปต์ด้วยรหัสนี้:
var=`hg st -R "$path"`
if [ -n "$var" ]; then
echo $var
fi
แต่รหัสเงื่อนไขจะดำเนินการhg st
เสมอเพราะพิมพ์อักขระบรรทัดใหม่อย่างน้อยหนึ่งตัว
- มีวิธีง่ายๆในการตัดช่องว่างจาก
$var
(เช่นtrim()
ในPHP )?
หรือ
- มีวิธีมาตรฐานในการจัดการกับปัญหานี้หรือไม่?
ฉันสามารถใช้sedหรือAWKได้ แต่ฉันคิดว่ามันมีทางออกที่ดีกว่าสำหรับปัญหานี้
$ var=$(echo)
$ [ -n $var ]; echo $? #undesired test return
0
$ [[ -n $var ]]; echo $?
1
echo " This is a string of char " | xargs
. echo " This i's a string of char " | xargs -0
แต่ถ้าคุณมีคำพูดเดียวในข้อความที่คุณสามารถทำต่อไปนี้: โปรดทราบว่าฉันพูดถึงล่าสุดของ xargs (4.6.0)
test=`echo`; if [ -n "$test" ]; then echo "Not empty"; fi
แต่จะทำtest=`echo "a"`; if [ -n "$test" ]; then echo "Not empty"; fi
ดังนั้นจึงต้องมีมากกว่าแค่บรรทัดใหม่ในตอนท้าย
echo $A | sed -r 's/( )+//g'
;