리눅스 쉘 스크립트 argument 질문입니다.

Tikiman의 이미지

#!/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 의 특수문자를 그대로 넘겨주수 있는 방법이 없을까요??

조언 부탁드립니다.

qiiiiiiiip의 이미지

"" 로 싸세요. 이 경우는 "bbb/*" 로 하시면 되겠네요.

Tikiman의 이미지

간단한 해법이 있었네요 감사합니다