shell脚本参数
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
例如:
#!/bin/sh
echo "arg_num: $#"
echo "shell_name: $0"
echo "first_arg : $1"
echo "second_arg : $2"
echo "args : $@"
㈡ 如何给shell脚本传参数
from:Linux命令行与shell脚本编程大全.第3版
向shell脚本传递数据的最基本方法是使用命令行参数。命令行参数允许在运行脚本时向命令行添加数据。
$ ./addem 10 30
本例向脚本addem传递了两个命令行参数( 10和30)。脚本会通过特殊的变量来处理命令行参数。下面是在shell脚本中使用单个命令行参数的简单例子。
$cattest1.sh
#!/bin/bash
#usingonecommandlineparameter
#
factorial=1
for((number=1;number<=$1;number++))
do
factorial=$[$factorial*$number]
done
echoThefactorialof$1is$factorial
$
$./test1.sh5
Thefactorialof5is120
$
㈢ 编写一个shell脚本,读入10个参数
楼上说的有点问题,只有$0~$9哦,没有$10的。这些叫做位置参数,共10个位置参数。
$0表示脚本名称本身,$1~$9分别表示9个参数,要想取第10个参数,必须用shift来移位。
shift (= shift 1), 即移一位。移位后$1就表示取第2个参数了。
shift 9后用$1就取到了第10个参数。
㈣ 执行SHELL脚本,传入参数,参数应该被里边的sql所用,请问怎么写
变量在sh中用$1,$2,$3... 顺序表示传入的参数。
sql写法:
select dept_id,dept_name from department
where dept_id=$1
㈤ shell 如何启动另外一个脚本执行,并传递参数
子shell变量传递给父shell,中间可以保存个临时文件让父shell去读。
下边是一个子shell,传递给父shell的一个例子,仅做参考
#!/bin/bash
(
subvar="helloshell"
echo"$subvar">temp.txt
)
readpvar<temp.txt
echo$pvar
㈥ linux shell编程:shell 脚本参数问题!
关于参数传递:
假我要获取/home某目录text.txt文件某目录我原先知道所需要先使用:
ls -l /home
获取/home目录信息
现需要ls -l /homels -l $filenamemore text.txt三命令写同shell
该写$filename传递
写简单程序
#!/bin/bash
i=0
while [$i]
do
echo "$i"
done
程序始报错:
snytax error near unexpected token 'do'
并且管我写任何内容要while控制语句报种错误
我程序问题linux问题
㈦ shell脚本中的$*,$@和$#
我没用过$@,但是可以自己写个脚本测试下。
先介绍下我知道的,如下:
位置变量 :$0,$1,$2,$3,$4,$5,$6,$7,$8,$9 $0显示运行的脚本,$1...显示位置参数的值
预定义变量:
$# 表示位置参数的数量
$* 表示所有位置参数的内容
$? 表示命令执行后返回的状态 (执行成功 返回0 执行不成功 返回非0)
$$ 表示当前进程的进程号 希望打开一个进程后不再打开另一个(/proc/<PID>)
$! 表示后台运行的最后一个进程号
$0 表示当前的进程名
测试脚本如下:(位置变量只输出到$3)
[root@XP-24-35 script]#vim a.sh
#!/bin/bash
echo '$0 ==> ' $0
echo '$1 ==> ' $1
echo '$2 ==> ' $2
echo '$3 ==> ' $3
echo '$$ ==> ' $$
echo '$* ==> ' $*
echo '$@ ==> ' $@
echo '$# ==> ' $#
echo '$? ==> ' $?
执行结果1(输入小于三个位置参数a,b)
[root@XP-24-35 script]# ./a.sh a b
$0 ==> ./a.sh
$1 ==> a
$2 ==> b
$3 ==>
$$ ==> 4847
$* ==> a b
$@ ==> a b
$# ==> 2
$? ==> 0
执行结果2(刚好输入三个位置参数)
[root@XP-24-35 script]# ./a.sh a b c
$0 ==> ./a.sh
$1 ==> a
$2 ==> b
$3 ==> c
$$ ==> 4844
$* ==> a b c
$@ ==> a b c
$# ==> 3
$? ==> 0
执行结果3(输入大于3个位置参数)
[root@XP-24-35 script]# ./a.sh a b c d e f
$0 ==> ./a.sh
$1 ==> a
$2 ==> b
$3 ==> c
$$ ==> 4852
$* ==> a b c d e f
$@ ==> a b c d e f
$# ==> 6
$? ==> 0
实验结果说明一切,忘采纳,谢谢。
㈧ shell 脚本参数 路径怎么设置
linux系统除了提供位置参数还提供内置参数,内置参数如下:
$# ----传递给程序的总的参数数目
$? ----上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。
$* ----传递给程序的所有参数组成的字符串。
$n ----表示第几个参数,$1 表示第一个参数,$2 表示第二个参数 ... $0 ----当前程序的名称
$@----以"参数1" "参数2" ... 形式保存所有参数
$$ ----本程序的(进程ID号)PID
$! ----上一个命令的PID
㈨ linux shell脚本调用参数传递
三个选择:
1)把参数写进脚本,运行脚本时不带参数。
2)使用交互式方法,运行时提示让用户手动输入这些信息。
3)搜索“linux 隐藏进程”。
如果你的用户名密码是用于登录的话,改用密钥好了:
http://..com/question/324853297.html
㈩ 怎么写一个shell脚本传入参数
echo第1个参数为$1
echo第9个参数为$9
echo第11个参数为${11}
forpin"$@";do
echo$p
done
forp;do
echo$p
done