ฉันพยายามตรวจสอบว่ามีบรรทัดใดบรรทัดหนึ่งอยู่ในชื่อไฟล์ของโฮสต์หรือไม่ ดังนั้นหากพบรูปแบบเฉพาะจากคำสั่ง grep dummy.txt จะถูกสร้างขึ้น จากนั้นฉันต้องการตรวจสอบว่า dummy.txt มีเงื่อนไขและดำเนินการต่อหรือไม่
แต่แม้ว่า dummy.txt จะถูกสร้างขึ้นโดยไม่พบคำสั่ง if:
if {[file exists $fileName] }
และการควบคุมจะถูกโอนไปยังบล็อกอื่น อะไรคือเหตุผล? มีวิธีใดที่ง่ายกว่าในการบรรลุสิ่งที่ฉันต้องการหรือไม่
set Host [lindex $argv 0 ]
spawn ssh -o StrictHostKeyChecking=no userid@$Host
expect "*assword*"
send "password\n"
expect "+"
send "cd path/that/contains/filename\n"
expect "*$*"
send "pwd\n"
set fileName dummy.txt
send {grep '\[abc\]' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> dummy.txt; }}
send "\n"
expect "+"
send {grep 'xyz' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> dummy.txt; }}
send "\n"
expect "+"
send "chmod 777 dummy.txt\n"
if {[file exists $fileName] } {
send {printf "\nabc xyz already exists"}
send "\n"
expect "+"
send "ls -l\n"
expect "+"
send "rm dummy.txt\n"
expect "+"
send "ls -l\n"
expect "+"
send "exit\n"
} else {
send {printf "cannot find $fileName"}
send "\n"
expect "+"
send {printf "\n[abc]\nxyz\n" >> filename}
send "\n"
expect "+"
send "cat filename\n"
expect "+"
send "exit\n"
}
wc | read ...
คุณสามารถตรวจสอบรหัสส่งคืนของ grep ได้ (0 = พบข้อมูลตรงกันดูman grep
)