脚本的一些测试和笔记总结"/>
shell脚本的一些测试和笔记总结
目录
- 1、cat <<EOF
- 2、echo -e
- 3、$#、 $@、 $* 、 $?
- 4、测试的demo
1、cat <<EOF
cat命令表示查看,而cat <<EOF命令表示将进行输入,直到以EOF终止符来结束输入(最后的新行)。EOF必须写在一行的头部,前面不能有制表符或者空格。如果结束符EOF前面有制表符或者空格,则EOF不会被当做结束符,只会被视为继续输入的状态。
cat <<EOF > test.txt
123
123
123
EOF
2、echo -e
参考文章:
-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
•\a 发出警告声;
•\b 删除前一个字符;
•\c 最后不加上换行符号;
•\f 换行但光标仍旧停留在原来的位置;
•\n 换行且光标移至行首;
•\r 光标移至行首,但不换行;
•\t 插入tab;
•\v 与\f相同;
•\ 插入\字符;
•\nnn 插入nnn(八进制)所代表的ASCII字符;
3、$#、 $@、 $* 、 $?
参考文章:
sh 2.sh a b c
- $# 会获取到 3,对应传入脚本的参数个数,统计的参数不包括 $0。
- $@ 会获取到 “a” “b” “c”,也就是所有参数的列表,不包括 $0。
- $* 也会获取到 “a” “b” “c”, 其值和 $@ 相同。但 $*和 $@有所不同。 $*把所有参数合并成一个字符串,而 $@会得到一个字符串参数数组。
- $? 可以获取到执行 sh 2.sh a b c 命令后的返回值。在执行一个前台命令后,可以立即用 $? 获取到该命令的返回值。该命令可以是系统自身的命令,可以是 shell 脚本,也可以是自定义的 bash 函数。
- 当执行系统自身的命令时,$? 对应这个命令的返回值。
- 当执行 shell 脚本时,$? 对应该脚本调用 exit 命令返回的值。如果没有主动调用 exit 命令,默认返回为 0。
- 当执行自定义的 bash 函数时,$? 对应该函数调用 return 命令返回的值。如果没有主动调用 return 命令,默认返回为 0。
#!/bin/shif [ $# -eq 0 ];then echo "shell has not args"
elseecho "shell has args"
fiecho "* = $*"
echo "@ = $@"for arg in $@
docase $arg ina)echo "a in args";;*)echo "------";;esac
done
4、测试的demo
C="hello shell sss"
if [ ! -z "$C" ] ; then echo "ok"for c in $Cdoif [ $(echo $c |grep -c "hello") -eq 1 ] || [ $(echo $c |grep -c "sss") -eq 1 ]; thenif [ -e "./test.txt" ];thenecho "file is exist"fitouch test.txt #create a fileecho $c > test.txtelseecho $c > test.txtfidone
fi
更多推荐
shell脚本的一些测试和笔记总结
发布评论