‘壹’ 编写shell脚本获取本机的网络地址
获取网路设备参数的命令是ifconfig但是显示的信息太多,如何能从这些信息中过滤出ip地址呢?
其实很简单,只需要一行命令
[root@yf3 root]# ifconfig eth0 | grep 'inet' | awk '{print $2}' | sed -e "s/addr\://"
192.168.11.5
这样ifconfig中的无效信息就被过滤掉了,只剩下本机的ip:192.168.11.5
‘贰’ Linux shell 脚本 间接获取输入参数的方法
如果是bash,可以用indirect expansion来搞,语法为 ${!var}。
比如
foo=bar
bar=123
echo ${!foo}
会打印 123
再比如下面的脚本,依次打印脚本的各个输入参数。
#!/bin/bash
var=1
while [ $var -le $# ]
do
echo "Param $var is ${!var}"
let var++
done
不用indirect expansion,也可以用 eval, 比如
#!/bin/bash
var=1
while [ $var -le $# ]
do
eval echo "Param $var is \$$var"
let var++
done
‘叁’ shell脚本中怎么利用参数'
在执行脚本时,后面可以跟参数,例如
./xxx.sh
arg1
arg2
arg3
...
那么arg1
arg2
arg3
就是传入的参数,在xxx.sh脚本中要引用参数,则使用$1,$2,$3来引用。
‘肆’ shell脚本怎么用getopts获取一个参数
while getopts "r:p:h" para; do
case $para in
r) param_r=$OPTARG;;
p) param_p=$OPTARG;;
h) help ; exit 0;;
*) help ; exit 1;;
esac
done
‘伍’ 如何获取传入给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
‘陆’ 简述shell的参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
实例
以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
为脚本设置可执行权限,并执行脚本,输出结果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
另外,还有几个特殊字符用来处理参数:
参数处理 说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。 如"$*"用“"”括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用“"”括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
#!/bin/bash
echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
执行脚本,输出结果如下所示:
$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3
‘柒’ linux shell 脚本读取用户输入的参数如何解决
while read var
do
echo $var
done
这样也是可以的,没错。
想回退的话用 ctrl+backspace
‘捌’ 如何从一个文件读取shell脚本执行参数
使用source命令可以把一个文件的内容读取到当前脚本来
例如:
a.conf 里面有一个变量 aa="1234"
在脚本里面使用source
#!/bin/bash
source./a.conf(source的时候最好用绝对路径,我这儿用的相对路径)
echo$aa