这个脚本中出现的几个函数有什么作用?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
13378333
帖子: 322
注册时间: 2012-05-31 12:00

这个脚本中出现的几个函数有什么作用?

#1

帖子 13378333 » 2012-08-23 17:32

就是END,EOF和exit 1 ,分别代表什么?感谢指点! :em03

#!/bin/bash


file=$1
user=$2
passwd=$3

if [ $# -ne 3 ]; then
echo $"Usage: $0 file ip dst password"
exit 1
fi
while read ip
do

expect << END
spawn scp $file $user@$ip:/root
expect {
"yes/no?" {send "yes\r";exp_continue}
"password:" {send "$passwd\r"}
}

expect eof

END
done<iplist.txt
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 这个脚本中出现的几个函数有什么作用?

#2

帖子 枫叶饭团 » 2012-08-23 17:35

看不懂.exe
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 这个脚本中出现的几个函数有什么作用?

#3

帖子 lilydjwg » 2012-08-23 17:49

那些都不是函数。

exit 就是 C 的 exit(3)。END 是标识多行字符串作为 stdin 的起始和结束的。eof 是 expect 脚本中表示读到流结束。
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: 这个脚本中出现的几个函数有什么作用?

#4

帖子 naturalaw » 2012-08-24 1:17

exit 1
exit是退出脚本之意,后面那个1是退出的返回值。
比如foo.sh里有这么一句 exit 1被执行了,那么你在shell里回显它的返回值,那个值就是1
foo.sh

代码: 全选

exit 1
foo.sh
echo $?
至于END就是标识符啦,在你这个脚本中。你也可以用别的词来替换掉它。比如AFK
  • The eternal law
funicorn
帖子: 1318
注册时间: 2005-09-13 4:56
系统: Ubuntu Jammy Jellyfi

Re: 这个脚本中出现的几个函数有什么作用?

#5

帖子 funicorn » 2012-08-24 3:25

花20分钟学一下here document和expect命令就明白了
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 这个脚本中出现的几个函数有什么作用?

#6

帖子 aerofox » 2012-08-24 6:47

那几个都不能称为函数,应该花点时间看看书,或者看看 bash 的手册。
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: 这个脚本中出现的几个函数有什么作用?

#7

帖子 link_01 » 2012-08-24 9:25

ABS_Guide我08年刚开始学Linux时,这个论坛下过这么一个文档,内容比较罗嗦,再配合Linux_shell这本书看相关命令,应该可以入门了。
还有个关于考试什么的论坛(大家),上面各种图书电子版由很多,也有Linux的。
其中如果对sed&awk想了解深一些O'Reilly sed & awk (第二版) 这本书;
(bash) shell自己找本,反正都差不多;
至于命令手册,还是用到什么命令再说吧。
笔记
-------------------------------------
http://blog.163.com/wqt_1101
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 这个脚本中出现的几个函数有什么作用?

#8

帖子 lilydjwg » 2012-08-24 10:16

funicorn 写了:花20分钟学一下here document和expect命令就明白了
哪里有 expect 的文档?
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 这个脚本中出现的几个函数有什么作用?

#9

帖子 tusooa » 2012-08-27 13:56

13378333 写了:就是END,EOF和exit 1 ,分别代表什么?感谢指点! :em03

#!/bin/bash


file=$1
user=$2
passwd=$3

if [ $# -ne 3 ]; then
echo $"Usage: $0 file ip dst password"
exit 1
fi
while read ip
do

expect << END
spawn scp $file $user@$ip:/root
expect {
"yes/no?" {send "yes\r";exp_continue}
"password:" {send "$passwd\r"}
}

expect eof

END
done<iplist.txt
exit 1是退出。1是错误码。
EOF不是函数。是here文档。 https://zh.wikipedia.org/wiki/Here%E6%96%87%E6%A1%A3

eof是expect脚本里的,end of file。expect eof是等待文件尾(按照常理,后边应该还有一些代码,比如执行个命令啥的),在这里大约是等待scp结束。

代码: 全选

] ls -ld //
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 这个脚本中出现的几个函数有什么作用?

#10

帖子 tusooa » 2012-08-27 13:57

你知道吗?
Here文档曾于2012年7月22日登上维基百科首页的“你知道吗?”栏位。
维基百科
Wikipe-tan without body.svg 此页面为第十次动员令的作品。
此条目乃自然与自然科学的作品之一,而此条目是一篇达标条目。 The Earth seen from Apollo 17.jpg

代码: 全选

] ls -ld //
回复