背景
前两天看到有人分享说,谷歌程序员至少要会3种语言,这要求倒也不过分。一个强类型、一个弱类型,一个工具型语言,刚好三个。想着随便更新点东西,就写几点关于工具shell语言的经验分享。
在安装、部署、扩容、升级等重要场景中,Bash的方便性不言而喻。但我始终提醒大家,对代码保持敬畏,无论是Rust还是Shell。
请一定记下如下示例,一旦MY_PATH变量未初始化或为初始化空,系统数据可能毁于一旦。
简单的一行代码,破坏力惊人。
MY_PATH=$1
...
rm -rf /$MY_PATH
高级的语言,因为有严格的语法检查和编译器给你把关,因此显得倒也问题不大。反而是越容易的、越解释型的语言,对于编码者本身要求很高。下面就先简单分享几个入门级别的shell的使用经验。
简单实践
1. souce 命令
source+filename 或者 小点+空格+filename,在当前Bash中读取FileName命令并执行
更推荐source,显式指令比小点更醒目
# I
source filename
# II 中间有空格
. filename
实践中,FileName可以作为简单配置文件,配置公共变量,比如
arch=x86_64
os_distro=Ubuntu
host_addr=192.168.0.1
2. 大括号
需要注意的是大括号内部不可留白
{a..z} 字母a到z的列表
{1..99} 数字1到99的列表
{t1,t2,t3}.txt t1.txt,t2.txt,t3.txt
{f{1..3},f6}.sh f1.sh,f2.sh,f3.sh,f6.sh
3. for命令
空格间隔的选项就可以for循环操作了,十分方便
# I
for f in Appale Banana Cherry; ...
# II
opts="Appale Banana Cherry"
for opt in $opt; ...
其他用法
# 遍历 /opt下文件名
for file in `ls /opt`; ...
# 遍历 A 到 Z
for char in {A..Z}; ...
# 遍历 1 到 99
for num in {1..99}; ...
4. 比较大小
不要混淆
== 和 != 是用来比较字符的
-lt -eq -gt 是用来比较数值的
5. 中括号
推荐更多使用双中括号[[,具体可以去查询用法,就到这了。
标签:...,shell,..,filename,99,sh,Linux,txt,分享 From: https://blog.csdn.net/u013214505/article/details/142986211