‘壹’ 如何给shell脚本传参数
方法/步骤
执行“nano test.sh”创建一个新的shell脚本。
脚本test.sh的内容如下:
#!/bin/sh
name=$1
echo "the ${name} are great man!"
给新创建的test.sh的脚本赋可执行权限,命令为“chmod 755 test.sh”。
执行'./test.sh "xiao wang"'命令,可以看到自己编写脚本的结果“the xiao wang are great man!”。
"name=$1"中$1为系统提供的位置参数,$0代表程序的名称,[$1/$2/...]从1开始为传递的参数。
linux系统除了提供位置参数还提供内置参数,内置参数如下:
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ... $0 ----当前程序的名称
$@----以"参数1" "参数2" ... 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
‘贰’ 如何向expect脚本里面传递参数
向expect脚本里面传递参数:
比如下面脚本用来做ssh无密码登陆,自动输入确认yes和密码信息,用户名,密码,hostname通过参数来传递
ssh.exp
Python代码
#!/usr/bin/expect
set timeout 10
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
spawn ssh--id -i .ssh/id_rsa.pub $username@$hostname
expect "yes/no"
send "yes\r"
expect "password:"
send "$password\r"
expect eof
执行脚本./ssh.exp root pasword hostname1
expect接收参数的方式和bash脚本的方式不太一样,bash是通过$0 ... $n 这种方式,而expect是通过set <变量名称> [lindex $argv <param index>],例如set username [lindex $argv 0]
‘叁’ 按键精灵如何实现脚本与脚本间的数据传递
Plugin File.WriteFileEx("C:\Documents and Settings\Administrator\桌面\MK's AutoFire.ini", "写入内容内容")
//=================写入代码
Plugin Text = File.ReadFileEx("C:\Documents and Settings\Administrator\桌面\MK's AutoFire.ini")
i=0
f=split(text,"|")
For UBound(f)
MessageBox "一共有[ "&UBound(f)&" ]句"&vbcrlf&"第[ "&i+1&" ]句为: "&f(i)
i=i+1
EndFor
//=================读出代码
‘肆’ linux 调用脚本怎么传脚本参数
Linux shell脚本开始执行时,系统会初始化一些脚本的环境变量和参数变量,这些变量是可以直接使用的,下面是一些参数变量:
$1,$2,$3......:代表脚本程序的参数,脚本有几个参数数字就到几;
那$0代表什么呢?当然是脚本的名字了
还有和脚本参数有关的一个脚本环境变量:$#
它代表传递给脚本的参数个数。
知道了这些,你就可以在你编写的脚本内编写处理脚本参数的代码,一旦你的脚本有了对参数的处理,你就可以这样调用有参数的脚本:
./脚本名 参数1 参数2......
参数和脚本名、参数和参数之间用空格分开,和使用shell命令的格式是一样的。
‘伍’ 在按键精灵脚本里如何向个句柄后台输送数字,字母,按键我不要数字(下次启动变化的)句柄
句柄会在你启动程序时,自动变化。所以你想不要变动的,是没有的。
而想变化也能传送字符,就要根据类名找句柄,然后赋值给这个句柄给一个变量
然后再传递给这个句柄,这样就可以做到改变里面的值了。
‘陆’ sqlplus 执行脚本文件时如何传参数
d:\test.sql脚本如下:
[sql] view plain
select &1 from &2;
exit;
执行时这样传参数:sqlplus "scott/tiger@test" @d:\test.sql sysdate al
注意:参数必须用&[1-9]表示,不然传不进去,会提示让手动输入参数
[sql] view plain
C:\>sqlplus "scott/tiger@test" @d:\test.sql sysdate al
D:\>sqlplus "scott/tiger@test" @d:\test.sql sysdate al
SQL*Plus: Release 11.2.0.1.0 Proction on 星期二 11月 1 21:59:00 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Proction
With the Partitioning, OLAP, Data Mining and Real Application Testing options
原值 1: select &1 from &2
新值 1: select sysdate from al
SYSDATE
--------------
01-11月-11
从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Proction
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断
开
D:\>
如果脚本中有重复用到相同的值,如果&1=&2:
d:\tes2.sql
[sql] view plain
delete scott.emp where no=&1 or deptno=&2;
commit;
执行时,就必须传2个参数:
[sql] view plain
sqlplus "scott/tiger@test" @d:\test2.sql 10 10
小窍门: 这时用procere就可以不用传多个相同的参数,则只用传1个参数:
d:\test3.sql
[sql] view plain
declare
var_no number:=&1;
begin
delete scott.emp where no=var_no or deptno=var_no;
commit;
end;
sqlplus "scott/tiger@test" @d:\test3.sql 10
‘柒’ 如何实现脚本之间的信息传递
我在A脚本(在节点A上)用on注册了事件监听 在B脚本(在节点B上)用emit发射事件 为什么A接收不到事件回调?我尝试在脚本A里面emit,就能够收到。on和emit只能在同一脚本内才可以吗?不可能吧!那如果实现不同节点上不同脚本之间的事件传递呢?
‘捌’ 如何向expect脚本里面传递参数
expect是一个用来实现自动交互功能的工具,使用expect-send来实现交互过程。脚本的执行方法与bash shell不一样,如:expect example.sh
向一个脚本传递参数,bash shell是使用$1,$2...来接收参数的,而epxect则将脚本的执行参数保存在数组$argv中,在脚本中一般将其赋值给变量:set 变量名 [lindex $argv 参数]
实例:
写一个自动登陆远程主机的脚本,通过参数传递主机名,帐户,密码
1)编写脚本
#!/usr/bin/expect
set ip [lindex $argv 0]
set username [lindex $argv 1]
set passwd [lindex $argv 2]
spawn ssh -l $username $ip
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$passwd\r" }
}
#expect eof
interact
注意:若登陆后便退出远程终端,则写expect eof即可。
2)执行脚本
expect autologin.sh 172.24.6.29 root redhat
‘玖’ 如何向expect脚本里面传递参数
如何向expect脚本里面传递参数 比如下面脚本用来做ssh无密码登陆,自动输入确认yes和密码信息,用户名,密码,hostname通过参数来传递 ssh.exp Python代码 #!/usr/bin/expect set timeout 10 set username [lindex $argv 0] set password
‘拾’ linux shell脚本,怎样变量传递执行结果
1、shell一般都是放在/bin或者/user/bin目录下,我们可以使用命令cat /etc/shells命令,查看当前linux系统可用的shell是什么。