shell脚本
一些特性
$ vim /usr/local/bin/demo
#文件内容
#!/bin/bash
echo 123
$ chmod +x /usr/local/bin/demo #加权限
$ demo #执行命令
123shell中对参数的处理
防止脚本同时运行多个 防止脚本多开
Last updated
$ vim /usr/local/bin/demo
#文件内容
#!/bin/bash
echo 123
$ chmod +x /usr/local/bin/demo #加权限
$ demo #执行命令
123Last updated
$ cat demo.sh
echo $ENV1
echo $ENV2
$ ENV1=a ENV2=b sh demo.sh
a
b#echo -n "$1"|md5sum|awk '{print $1}'|xargs -I{} kubectl -n {} $2 $3 $4 $5 $6 $7
id=`echo -n "$1"|md5sum|awk '{print $1}'`
if [ -z $2 ];then
echo $id
exit 0
fi
kubectl -n $id ${@:2}
# ${@:2} 会返回第二个开始的所有参数,参考: https://www.jianshu.com/p/eaa3406b7cff
# 示例: ${@:1:$#-1} : 其中$@是列表形式列出所有的传入参数,然后:1是从第一个参数开始,后面不加任何东西的话是一直到结尾,而加:$#-1是$#是参数总个数-1,即显示除去最后一个参数外的所有参数。while getopts a:n:f:h FLAG; do
case $FLAG in
a) #set option "a"
action="$OPTARG"
echo "$action start!"
;;
n) #set option "n"
namespace="$OPTARG"
echo "namespace = $namespace"
;;
f) #set option "f"
valuesOption="$OPTARG"
echo "valuesOption = $valuesOption"
;;
h) #show help
HELP
;;
\?) #unrecognized option - show help
echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed."
HELP
;;
esac
done#!/bin/bash
LOCK_NAME="/tmp/my.lock"
if [[ -e $LOCK_NAME ]] ; then
echo "re-entry, exiting"
exit 1
fi
### Placing lock file
touch $LOCK_NAME
echo -n "Started..."
### 开始正常流程
### 正常流程结束
### Removing lock
rm -f $LOCK_NAME
echo "Done."#!/bin/bash
LOCK_NAME="/tmp/my.lock"
if ( set -o noclobber; echo "$$" > "$LOCK_NAME") 2> /dev/null;
then
trap 'rm -f "$LOCK_NAME"; exit $?' INT TERM EXIT
### 开始正常流程
### 正常流程结束
### Removing lock
rm -f $LOCK_NAME
trap - INT TERM EXIT
else
echo "Failed to acquire lockfile: $LOCK_NAME."
echo "Held by $(cat $LOCK_NAME)"
exit 1
fi
echo "Done."