ฉันพบสิ่งที่ดูเหมือนว่าจะเป็นโค้ดที่ดีในการหมุน postfix IP แต่ฉันไม่สามารถใช้งานได้ เมื่อฉันเรียกใช้ฉันได้รับข้อผิดพลาดนี้:
rotate_postfix_ip.sh: 2: Syntax error: "(" unexpected
ฉันไม่รู้ว่าจะแก้ไขอย่างไรไม่มีใครช่วยได้ไหม
#!/bin/bash
ips=("64.250.120.128" "64.250.121.241" "64.250.121.242")
length=${#ips[@]}
pos=`cat current.txt`
oldip=${ips[$pos - 1]}
if [ "$length" -eq "$pos" ] ; then
echo "limit reached"
pos=1
else
echo "increment!"
(( pos++ ))
fi
echo "$pos" > current.txt
newip=${ips[$pos - 1]}
echo "prev: $oldip"
echo "new: $newip"
sed -ie "s/smtp_bind_address=$oldip/smtp_bind_address=$newip/g" /etc/postfix/main.cf > /dev/null
service postfix reload
x@debi:~$ cat test.sh
#!/bin/bash
ips=("1" "2" "3")
x@debi:~$ sh test.sh
test.sh: 2: Syntax error: "(" unexpected
x@debi:~$ bash -xv test.sh
#!/bin/bash
ips=("1" "2" "3")
+ ips=("1" "2" "3")
ห่ามันไม่ได้เป็นอะไรกับการขึ้นบรรทัดใหม่ ฉันได้แก้ไขไฟล์ใหม่ด้วยกลุ่มและมันให้ข้อผิดพลาดเดียวกัน
ลองใส่
—
mpy
declare -a ips
หลังจากแถวชีคอ
@mpy GNU bash เวอร์ชัน 4.1.5 (1) -release (i486-pc-linux-gnu) ก็ลองด้วยการประกาศ -a และมันก็ไม่ทำงาน
—
sathia
ไม่มีการทำให้จุดสิ้นสุดของเส้นยุ่งลงนั่นคือ \ n \ r แทนที่จะเป็น \ n? อาจ
—
mpy
bash -xv rotate_postfix_ip.sh
จะไม่ให้คำแนะนำใหม่หรือ นอกจากนี้โปรดลองป้อน ips=("64.250.120.128" "64.250.121.241" "64.250.121.242")
ที่บรรทัดคำสั่ง (bash-)
คุณรันสคริปต์ได้อย่างไร ถ้าคุณทำ
—
jaume
sh /path/to/rotate_postfix_ip.sh
มัน เคยชิน วิ่งเพราะ bash
เมื่อเรียกว่า sh
เลียนแบบเชลล์เป้าหมายซึ่งไม่สนับสนุนอาร์เรย์ คุณต้องเรียกใช้สคริปต์เช่นนี้: bash /path/to/rotate_postfix_ip.sh
หรือเช่นนี้ chmod 755 /path/to/rotate_postfix_ip.sh; /path/to/rotate_postfix_ip.sh
.
bash
คุณใช้เวอร์ชั่นอะไร ทำงานได้ดีกับGNU bash, version 4.1.10(4)-release (i686-pc-cygwin)
.