shell 脚本的一些常用命令 set, export, shell数组,esac, tee,time

1. set

Linux set命令用来设置 shell ,设置使用shell的执行方式。
参数说明

  • -a  标示已修改的变量,以供输出至环境变量。
  • -b  使被中止的后台程序立刻回报执行状态。
  • -C  转向所产生的文件无法覆盖已存在的文件。
  • -d  Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
  • -e  若指令传回值不等于0,则立即退出shell。
  • -f  取消使用通配符。
  • -h  自动记录函数的所在位置。
  • -H Shell  可利用"!"加<指令编号>的方式来执行history中记录的指令。
  • -k  指令所给的参数都会被视为此指令的环境变量。
  • -l  记录for循环的变量名称。
  • -m  使用监视模式。
  • -n  只读取指令,而不实际执行。
  • -p  启动优先顺序模式。
  • -P  启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
  • -t  执行完随后的指令,即退出shell。
  • -u  当执行时使用到未定义过的变量,则显示错误信息。
  • -v  显示shell所读取的输入值。
  • -x  执行指令后,会先显示该指令及所下的参数。
  • +<参数>  取消某个set曾启动的参数。
    set -xset +x可以配套使用,显示一段代码的运行情况,在set命令之后执行的每一条命令以及加载命令行中的任何参数都会显示出来,每一行都会加上加号(+),提示它是跟踪输出的标识。

2. export

Linux export命令用于设置或显示环境变量。
语法: export [-fnp][变量名称]=[变量设置值]
参数说明:

  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的shell赋予程序的环境变量。

3.shell 数组

  • 获取数组的元素
    使用@ 或 * 可以获取数组中的所有元素
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组的元素为: ${my_array[*]}"
echo "数组的元素为: ${my_array[@]}"

输出的结果为

$ chmod +x test.sh 
$ ./test.sh
数组的元素为: A B C D
数组的元素为: A B C D
  • 获取数组的长度
my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "数组元素个数为: ${#my_array[*]}"
echo "数组元素个数为: ${#my_array[@]}"

输出的结果为:

$ chmod +x test.sh 
$ ./test.sh
数组元素个数为: 4
数组元素个数为: 4

4.case … esac

与其他语言中的 switch … case 语句类似,是一种多分支选择结构。

5.tee

Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
参数:

  • -a或–append  附加到既有文件的后面,而非覆盖它.
  • -i或–ignore-interrupts  忽略中断信号。
  • –help  在线帮助。
  • –version  显示版本信息。

6.time

一个程序在运行时使用的系统资源通常包括CPU、内存和I/O等;
CPU资源的统计包括实际使用时间(real time)、用户态使用时间(the process spent in user mode)、内核态使用时间(the process spent in kernel mode)。
time 它可以为一段脚本或一个程序的执行计时。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是 Shell 脚本中常用的命令以及使用方法: 1. echo:输出文本或变量值 用法:echo [选项] [字符串] 常用选项: -n:不换行输出 -e:启用转义字符 示例: ``` echo "Hello, world!" # 输出 Hello, world! echo -n "Hello, " # 输出 Hello, 不换行 echo "world!" # 输出 world!,与上一行连在一起 echo -e "1\t2\t3\n4\t5\t6" # 输出带有制表符和换行符的字符串 ``` 2. read:接收用户输入 用法:read [选项] [变量名] 常用选项: -p:提示用户输入时显示的字符串 示例: ``` read -p "请输入你的名字:" name echo "你好,$name!" ``` 3. if:条件语句 用法: ``` if [ 条件 ]; then # 条件成立时执行的语句 else # 条件不成立时执行的语句 fi ``` 示例: ``` if [ $1 -gt 0 ]; then echo "$1 是正整数" elif [ $1 -eq 0 ]; then echo "$1 是零" else echo "$1 是负整数" fi ``` 4. for:循环语句 用法: ``` for 变量 in 列表; do # 循环体 done ``` 示例: ``` for i in {1..10}; do echo $i done for file in *.txt; do echo $file done ``` 5. while:循环语句 用法: ``` while [ 条件 ]; do # 循环体 done ``` 示例: ``` i=1 while [ $i -le 10 ]; do echo $i i=$((i+1)) done ``` 6. case:多分支语句 用法: ``` case 变量 in 模式1) # 模式1 成立时执行的语句 ;; 模式2) # 模式2 成立时执行的语句 ;; *) # 所有模式都不成立时执行的语句 ;; esac ``` 示例: ``` case $1 in start) echo "启动服务" ;; stop) echo "停止服务" ;; restart) echo "重启服务" ;; *) echo "用法:$0 start|stop|restart" ;; esac ``` 7. test:测试文件或字符串是否存在,以及比较数值 用法: ``` test [选项] 参数 [选项] 参数 ``` 常用选项: -e:测试文件是否存在 -f:测试文件是否为普通文件 -d:测试文件是否为目录 -z:测试字符串是否为空 -n:测试字符串是否非空 -eq:测试数值是否相等 -lt:测试数值是否小于 -gt:测试数值是否大于 示例: ``` if test -e file.txt; then echo "file.txt 存在" fi if [ -f file.txt ]; then echo "file.txt 是普通文件" fi if [ -d dir ]; then echo "dir 是目录" fi if [ -z "$str" ]; then echo "str 是空字符串" fi if [ $num -gt 0 ]; then echo "num 是正数" fi ``` 8. grep:文本搜索工具 用法:grep [选项] 模式 [文件] 常用选项: -i:忽略大小写 -v:反向搜索,输出不匹配的行 -n:显示匹配行的行号 示例: ``` grep "hello" file.txt # 在 file.txt 中搜索 hello grep -i "hello" file.txt # 在 file.txt 中忽略大小写地搜索 hello grep -n "hello" file.txt # 在 file.txt 中搜索 hello 并显示匹配行的行号 grep -v "hello" file.txt # 在 file.txt 中反向搜索,输出不匹配的行 ``` 9. sed:流编辑器,用于文本替换 用法:sed [选项] '命令' 文件 常用命令: s/模式/替换/:替换指定模式为指定替换内容 示例: ``` sed 's/hello/hi/g' file.txt # 将 file.txt 中所有 hello 替换为 hi ``` 10. awk:文本处理工具,可进行简单数据分析和处理 用法:awk [选项] '模式 { 命令 }' [文件] 常用命令: print:输出指定内容 示例: ``` awk '{ print $1 }' file.txt # 输出 file.txt 中每行的第一个单词 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值