set命令
set -x: 该代码以后的代码都开启调试输出,直到遇到set +x取消
set +x: 关闭调试输出
set -e: 该代码以后的代码如果返回一个非0的值,那么整个脚本立即退出,遇到set +e取消该功能
set +e: 取消set -e的功能
if语句
-n: 表示不为空
-z: 表示长度为0
-eq: 等于
-lt: 小于
-gt: 大于
-ge: 不小于
-ne: 不等于
-le: 不大于
-r: 如果文件存在且可读
-w: 如果文件存在且可写
-x: 如果文件存在且可执行
不为空的时候输出hello world!1
2
3
4
5#!/bin/sh
if [ -n "$1" ]; then
echo "hello world!"
fi
为空的时候执行/bin/bash, 不为空输出( \$@ 表示输出所有内容, \$1 表示第一个参数)1
2
3
4
5
6#!/bin/sh
if [ -z "$1" ]; then
/bin/bash
else
echo $@
fi
while语句
1 | #!/bin/sh |
for语句
1 | #!/bin/sh |
若干用法总结
将第一个参数装换成小写,upper和lower对调即是大写1
2
3
4
5#!/bin/sh
if [ ! -z "$1" ]; then
echo $1 |tr '[:upper:]' '[:lower:]'
fi
查找/home/yankang/shell/test/是否为空1
2
3
4
5#!/bin/sh
if [ -n "$(find /home/yankang/shell/test/ -prune -empty)" ]; then
echo "hello world"
fi
如果第一个参数后面是0~9之间的数字则后面加上”p\${2}”,否则直接后面加上”\${2}”1
2
3
4
5
6
7
8
9function dev_part {
if [[ "${1:0-1:1}" == [0-9] ]]; then
echo "${1}p${2}"
else
echo "${1}${2}"
fi
}
echo $(dev_part $1 $2)
奇怪的用法,后面的‘exec complete’没有输出1
2
3
4
5
6
7cat ./test << EOF
> echo "something right"
> exec ./hello
> echo "exec complete"
> EOF
chmod +x test
./test