มีปัญหามากมายในรหัสขนาดเล็กของคุณ:
อัญประกาศเดี่ยวภายในอัญประกาศคู่ไม่ป้องกันการแทนที่ตัวแปร
ดังนั้น, $0 ขยายเป็น /ถัง/ทุบตี. ดู ที่นี่.
คุณโชคดีจริง ๆ ที่คำสั่งของคุณล้มเหลว !! หากใช้งานได้จะทำให้ข้อมูลของคุณว่างเปล่า /etc/group ไฟล์และคุณจะมีปัญหาร้ายแรง
ในขณะที่คุณออก คำสั่ง > ไฟล์, ไฟล์ ถูกเปิดและว่างเปล่าสำหรับการเขียนและของคุณ สั่งการ จะเห็นไฟล์ว่าง
ใช้ดีกว่า > file.temp && ไฟล์ mv file.temp หรือ awk - ฉันแทนที่ ....
แทนที่จะเพิ่ม ทุบตี ตัวแปรโดยตรงใน อึดอัด รหัส, ใช้ awk -v var=$var ตัวเลือกและการใช้งาน วาร์ ข้างใน อึดอัด.
แล้วจะทำอย่างไร ?
คุณไม่จำเป็นต้องอ้างถึงนรกที่ซ้ำกันนี้ คุณสามารถใช้:
sudo awk -i แทนที่ไฟล์ '...'
หรือ
awk '...' ไฟล์ | sudo tee file.temp && ไฟล์ sudo mv file.temp
หรือสำหรับกรณีของคุณเหมาะกว่า เสด:
sudo sed -i '...' ไฟล์
อย่างไรก็ตามคุณไม่ควรเปลี่ยน /etc/group ด้วยตนเองเลย
เพิ่มผู้ใช้ด้วย ม็อดผู้ใช้ (ตามที่แนะนำ ที่นี่):
sudo usermod -a -G groupName ชื่อผู้ใช้