리눅스 쉘 스크립트 argument 질문입니다.
#!/usr/bin/expect -f
if {$argc < 7} {
puts " user ipaddr port password command filename path"
exit
}
set user [lindex $argv 0]
set ipaddr [lindex $argv 1]
set port [lindex $argv 2]
set pwd [lindex $argv 3]
set command [lindex $argv 4]
set filename [lindex $argv 5]
set path [lindex $argv 6]
set timeout 600
proc upload { user ipaddr port password command filename path} {
spawn sftp -o Port=$port $user@$ipaddr
expect -re "yes/no" {
send "yes\r"
exp_continue
} -re "password:" {
send "$password\r"
}
expect -re "sftp>" {
send "$command -p $filename $path \r"
}
expect -re "sftp>" {
send "quit\r"
}
}
upload $user $ipaddr $port $pwd $command $filename $path
expect 를 이용하여
sftp를 접속하고 sftp 명령어를 수행 하는 스크립트을 꾸리고 있는데요
전반적으로 잘 동작 하는데
문제는 argument 에 *가 들어갔을 입니다.
예를들어
bbb 폴더 안에 aaa, ccc 라는 파일이 있다고 할때
aaa 파일 하나를 //home/test/bbb 폴더에 전송하려고 하면
test.sh user 127.0.0.1 22 password put bbb/aaa //home/test/bbb
로 사용합니다. 잘 됩니다.
하지만 bbb폴더 안의모든 파일을 보내려고 하면
test.sh user 127.0.0.1 22 password mput bbb/* //home/test/bbb
로 입력하였을 때
sftp>mput -p bbb/aaa /bbb/ccc
처럼 나옵니다.
$argv 5 의 * 때문으로 보이는데요
입력받은 argument 의 bbb/* 를
입력받은 인자대로
sftp>mput -p bbb/* //home/test/bbb
을 수행 해주었으면 하는데
입력받은 argument 의 특수문자를 그대로 넘겨주수 있는 방법이 없을까요??
조언 부탁드립니다.
"" 로 싸세요. 이 경우는 "bbb/*" 로 하시면
"" 로 싸세요. 이 경우는 "bbb/*" 로 하시면 되겠네요.
간단한 해법이 있었네요 감사합니다
간단한 해법이 있었네요 감사합니다
댓글 달기