Linux shell脚本开始执行时,系统会初始化一些脚本的环境变量和参数
变量,这些变量是可以直接使用的,下面是一些参数变量:
$1,$2,$3:代表脚本程序的参数,脚本有几个参数数字就到几;
那$0代表什么呢?当然是脚本的名字了
还有和脚本参数有关的一个脚本环境变量:$#
它代表传递给脚本的参数个数。
知道了这些,你就可以在你编写的脚本内编写处理脚本参数的代码,一旦你的脚本有了对参数的处理,你就可以这样调用有参数的脚本:
/脚本名 参数1 参数2
参数和脚本名、参数和参数之间用空格分开,和使用shell命令的格式是一样的。
linux脚本文件中,从文件中读取数据并赋值给变量的 *** 作方法和步骤如下:
1、首先,创建一个名为shellsh的文件:vi shellsh,如下图所示。
2、其次,完成上述步骤后,输入头文件#!/bin/bash,如下图所示。
3、接着,完成上述步骤后,保存并打开权限(chmod +x shellsh)并运行:/shellsh,如下图所示。
4、然后,完成上述步骤后,输入一个字符串,如下图所示。
5、随后,完成上述步骤后,要计算乘以5的值,需要按如下方式编辑shellsh(vi shellsh)脚本命令,如下图所示。
6、最后,保存,开权限运行:输出一个整数,如下图所示。这样,问题就解决了。假设文件名称为tttxt,则下列shell脚本可以将6个数字分别赋值给6个变量
i=1
for
lines
in
`cat
tttxt`
do
case
${i}
in
1)
var1=${lines};;
2)
var2=${lines};;
3)
var3=${lines};;
4)
var4=${lines};;
5)
var5=${lines};;
6)
var6=${lines};;
esac
i=`expr
${i}
+
1`
done
echo
${var1}
echo
${var2}
echo
${var3}
echo
${var4}
echo
${var5}
echo
${var6}
#!/bin/bash
test(){
a=1
}
a=100
echo "out of function a="$a
echo "###################"
test
echo "in the function a="$a
read(选项)(参数)
选项:
-p:指定读取值时的提示符
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。。
参数:
变量:指定读取值的变量名
1、案例一:读取控制台输入一个NUM1值
2、案例二:读取控制台输入一个NUM2值,在10秒内输入。
se "$x" in
y | yes ) return 0;;
n | no ) return 1;;
) echo "Answer yes or no"
shell结束用return跳出while true
while true 是一直为真,不断循环,直到输入yes或no时,用return退出shell程序。程序结束了,循序肯定也结束了。
-------------------------
补充:也就是说while true 实际是一个死循环。我可以这样理解么?我们是用return 返回0或1来退出循环。能把代码运行步骤说一下么。输入三个数据分别是yes,no和其他任意的。
可以说是死循环。不是说所有的死循环都不好,这里的死循环保证了程序一直运行,直到得到你想要的结果。
输入yes,返回0,就是正常结束
输入no,返回1,就是异常结束
输入其它的,则进行下一轮循环,要求你重新输入
count=$# # 获取脚本参数个数
cmd=echo # 初始化 cmd 变量,赋值为 “echo”
while [ $count -gt 0] # 如果 count 大于0,执行下面的循环
do
cmd="$cmd \$$count" # 给cmd重新赋值,变为 “echo ${count的值}”
count='expr $count-1' # count减1
done # 之后回到上面的 while 判断
eval $cmd # 执行cmd命令。
这个脚本的功能就是反序打印脚本参数值。
假设这个脚本叫做 scriptsh,那么执行 scriptsh 1 2 3
结果为: 3 2 1
sh 绝对路径/xxxsh 参数1 参数2 参数3参数n
---------------------------------------------------------------------------------
如果你保存临时文件的话,可以使用xargs
比如脚本文件为1sh,而参数保存在args文件中,用一个命令得到参数内容
cat args
那么最后可以这样执行
cat args |xargs sh 1sh
如果不打算保存临时文件,那你只好在脚本中写清楚要如何调用,参数有几个。
比如你使用2sh调用1sh,在2sh 中写清楚
1sh $arg1 $arg2这样就可以了。
当然脚本中的arg1,arg2也可以是最初的第一个脚本调用传递进来的,也可以是硬编码写死的。
评论列表(0条)