shell脚本的一些测试和笔记总结

目录

  • 1、cat <
  • 2、echo -e
  • 3、$#、 $@、 $* 、 $?
  • 4、测试的demo

1、cat <

cat命令表示查看,而cat <

cat <<EOF > test.txt
123
123
123
EOF

在这里插入图片描述

2、echo -e

参考文章:https://blog.csdn.net/qq_36412526/article/details/111411270

-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

•\a 发出警告声;
•\b 删除前一个字符;
•\c 最后不加上换行符号;
•\f 换行但光标仍旧停留在原来的位置;
•\n 换行且光标移至行首;
•\r 光标移至行首,但不换行;
•\t 插入tab;
•\v 与\f相同;
•\ 插入\字符;
•\nnn 插入nnn(八进制)所代表的ASCII字符;

3、$#、 $@、 $* 、 $?

参考文章:https://zhuanlan.zhihu.com/p/527179594

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/sh

if [ $# -eq 0 ];then  
    echo "shell has not args"
else
    echo "shell has args"
fi

echo "* = $*"
echo "@ = $@"

for arg in $@
do
    case $arg in
        a)
            echo "a in args"
        ;;
        *)
            echo "------"
        ;;
    esac
done

shell脚本的一些测试和笔记总结_第1张图片

4、测试的demo

C="hello shell sss"
if [ ! -z "$C" ] ; then   
    echo "ok"
    for c in $C
    do
        if [ $(echo $c |grep -c "hello") -eq 1 ] || [ $(echo $c |grep -c "sss") -eq 1 ]; then
            if [ -e "./test.txt" ];then
                echo "file is exist"
            fi
            
            touch test.txt  #create a file
            echo $c > test.txt
        else
            echo $c > test.txt
        fi
    done
fi

你可能感兴趣的:(shell,笔记,bash,linux)