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!"
- 切换到shell脚本所在目录执行
[email protected]:/# cd /tmp/
[email protected]:/tmp# chmod +x test.sh
[email protected]:/tmp# ./test.sh
shell level :2
hello world!
- 以绝对路径执行
[email protected]:~# chmod +x /tmp/test.sh
[email protected]:~# /tmp/test.sh
shell level :2
hello world!
- 直接使用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!
- 在当前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\n" NO. Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
[email protected]:/tmp# ./test.sh
NO. Name Mark
1 Sarath 80.35
2 James 91.00
2. echo
- 不换行
echo -n "hello world"
- 转义
echo -e "hello\t\tworld"
- 彩色输出
颜色 | 重置 | 黑 | 红 | 绿 | 黄 | 蓝 | 紫 | 青 | 白 |
---|---|---|---|---|---|---|---|---|---|
前景色 | 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 "\033[47;31m This is red test \033[0m"
原文地址:https://www.cnblogs.com/gaoyuanzhi/p/10021791.html