shell脚本从入门到精通(中级)之提高篇

Posted 故园旧梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本从入门到精通(中级)之提高篇相关的知识,希望对你有一定的参考价值。

shell 脚本入门到精通(中级)

一、shell 脚本的执行
二、输出格式化

一、shell 脚本的执行

1. 脚本执行的4种方法

$ ls /tmp/test.sh
/tmp/test.sh
#!/bin/bash
# test.sh
# 这里借助SHLVL这个变量,SHLVL可以显示shell的层级,
# 每启动一个shell,这个值就加1
echo "shell level :$SHLVL"
echo "hello world!"
  1. 切换到shell脚本所在目录执行

    [email protected]:/# cd /tmp/
    [email protected]:/tmp# chmod +x test.sh
    [email protected]:/tmp# ./test.sh
    shell level :2
    hello world!

  2. 以绝对路径执行

    [email protected]:~# chmod +x /tmp/test.sh
    [email protected]:~# /tmp/test.sh
    shell level :2
    hello world!

  3. 直接使用bash或sh 来执行bash shell脚本

    [email protected]:/tmp# bash test.sh
    shell level :2
    hello world!
    [email protected]:/tmp# sh test.sh
    shell level :1
    hello world!

  4. 在当前shell 环境中执行

    [email protected]:/tmp# . test.sh
    shell level :1
    hello world!
    [email protected]:/tmp# source test.sh
    shell level :1
    hello world!

总结:注意看SHLVL的值,前3种方式都在子shell中执行(sh除外),第4种在当前shell种执行。

2.调试脚本

bash -x script.sh 跟踪调试shell脚本

例:

[email protected]:/tmp# bash -x test.sh
+ echo ‘shell level :2‘
shell level :2
+ echo ‘hello world!‘
hello world!

-x 打印所执行的每一行命令以及当前状态
set -x : 在执行时显示参数和命令
set +x : 禁止调试
set -v : 当命令进行读取时显示输入
set +v : 禁止打印输入

二、输出格式化

1. C语言风格的格式化

#!/bin/bash
printf "%-5s %-10s %-4s
" NO. Name Mark
printf "%-5s %-10s %-4.2f
" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f
" 2 James 90.9989
[email protected]:/tmp# ./test.sh
NO.   Name       Mark
1     Sarath     80.35
2     James      91.00

2. echo

  1. 不换行
    echo -n "hello world"
  2. 转义
    echo -e "hello world"
  3. 彩色输出
颜色 重置 绿
前景色 0 30 31 32 33 34 35 36 37
背景色 0 40 41 42 43 44 45 46 47

echo -e "e[1;31m This is red test e[0m"

echo -e "33[47;31m This is red test 33[0m"



























以上是关于shell脚本从入门到精通(中级)之提高篇的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux从入门到精通之第六节:shell脚本

嵌入式Linux从入门到精通之第六节:shell脚本

shell从入门到精通shell脚本几种运行方式的区别

shell从入门到精通(-1)初次会面运行第一个shell脚本

Redis从入门到精通:初级篇

京峰Linux Shell编程从入门到精通