shell脚本
1.传参
vi isc-agent.sh
#!/bin/bash
action(){
descr=$1;shift
cmd=$@
echo "descr:$descr"
echo "cmd:$cmd"
ret=$?
if [ $ret -eq 0 ];then
echo "ok"
else
echo "failed"
fi
echo $ret
}
action $1 $2 $3 $4
执行命令
[root@harbor ~]# ./isc-agent.sh a b c d
descr:a
cmd:b c d
ok
0
- $1:将脚本的第一个命令行参数($1)赋值给变量descr。$1代表脚本运行时传递给它的第一个参数
- shift:将脚本中剩余的位置参数(positional arguments)向左移动一位,丢弃第一个参数。这意味着原本在$2位置上的参数现在会出现在$1位置,原本在$3位置上的参数现在会出现在$2位置
2.逐行取出参数
#!/bin/bash
action(){
descr=$1;shift
echo "descr:$descr"
# $#表示参数个数
while [ "$#" -gt 0 ]; do
echo "参数个数:$#, 参数:$@,去除左边: $descr"
descr=$1;shift
done
}
action $1 $2 $3 $4
执行命令
[root@harbor ~]# ./isc-agent.sh a b c d
descr:a
参数个数:3, 参数:b c d,去除左边: a
参数个数:2, 参数:c d,去除左边: b
参数个数:1, 参数:d,去除左边: c
3.获取脚本路径
vi isc-agent.sh
#!/bin/bash
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
echo $0
echo $(dirname "$0")
echo cd "$(dirname "$0")"
echo ${SHELL_FOLDER}
执行命令
[root@harbor ~]# /root/isc-agent.sh a b c d
/root/isc-agent.sh
/root
cd /root
/root
- 取当前运行脚本的所在路径: $0
- 取当前脚本所在路径的父目录: dirname “$0”
- cd返回到的父目录: cd “$(dirname “$0”)”
- 输出地址: cd “$(dirname “$0”)”;pwd
- 前面任务执行完毕,执行后续任务,前后无逻辑关系:;
原文地址:https://blog.csdn.net/qiao2458/article/details/145265975
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!