环境搭建
vs code+虚拟机
学习资料
- Linux命令行与shell脚本编程大全.第3版.pdf
- LINUX SHELL脚本攻略
Shell 是一个应用程序,它负责接收用户输入的命令,然后根据命令做出相应的动作,Shell 负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成相应的工作,然后将结果反馈给应用层或者用户。
第一个shell 程序
格式为:#!/bin/bash
#!/bin/bash
echo "hello world"
解释:#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
打印不换行-n
- echo 自动会将换行 可以加-n来屏蔽换行
- printf
#!/bin/bash
echo "hello world"
echo 'hello world'
printf "hello world\n"
printf "%5s %5s %5s\n" 3 test 77.332
转义字符 -e
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
- \a 发出警告声;
- \b 删除前一个字符;
- \c 最后不加上换行符号;
- \f 换行但光标仍旧停留在原来的位置;
- \n 换行且光标移至行首;
- \r 光标移至行首,但不换行;
- \t 插入tab;
- \v 与\f相同;
- \ 插入\字符;
- \nnn 插入nnn(八进制)所代表的ASCII字符;
使用\t
#!/bin/bash
#!/bin/bash
echo -e "1\t2\t3"
打印有颜色的文字
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
- \e[1;31m 打印红色文字
- \e[0m 将颜色重新置回
#!/bin/bash
#!/bin/bash
echo -e "\e[1;31mThis is red text"
echo -e "\e[1;32mThis is green text\e[0m"
背景色:
echo -e “\e[1;42mGreed Background\e[0m”
Greed Background颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
#!/bin/bash
#!/bin/bash
echo -e "\e[1;41mThis is red text"
echo -e "\e[1;32mThis is green text\e[0m"
变量 格式为A=B
使用一个定义过的变量,只要在变量名前面加美元符号$即可
注意A = B和A=B不一样 前者是赋值,后者是相等
#!/bin/bash
var="value"
echo $var
echo ${var}
案例二
#!/bin/bash
var="value"
fruit=apple
count=5
echo "we have $count ${fruit}(s)"
只读变量readonly
#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.runoob.com"
删除变量unset
#!/bin/sh
myUrl="https://www.runoob.com"
unset myUrl
echo $myUrl
环境变量(父变量)未在该文件的变量
#!/bin/bash
echo "hello world"
获取字符串长度#
#!/bin/sh
myUrl="https://www.runoob.com"
echo ${#myUrl}
shell 数学运算let 、[]、 (())
#!/bin/bash
num1=1;
num2=2;
echo $num1
echo $num2
let result=num1+num2
echo $result
result=$[num1+num2]
echo $result
result=$((num1+num2))
echo $result
文件描述符和重定向 > 、>>
“>” 方法 每次内容都先清空再写进去
#!/bin/bash
echo "dfadfljdsaljf" > test.txt
">>"方式添加 将文本追加到目标文件中
#!/bin/bash
echo "dfadfljdsaljf" >> test.txt
数组和关联数组 * 打印长度
打印一个数组的值
#!/bin/bash
array_var=(1 2 3 4 5)
echo ${array_var[0]}
打印所有数组的值 "
#!/bin/bash
array_var=(1 2 3 4 5)
echo ${array_var[*]}
打印数组个数 #
#!/bin/bash
array_var=(1 2 3 4 5)
echo ${#array_var[*]}
关联数组-类似于python 键和值的对应关系
#!/bin/bash
array_var=(1 2 3 4 5)
echo ${array_var[*]}
# 类似于python 键和值的对应关系
declare -A ass_array
ass_array=([index1]=val1 [index2]=val2)
echo ${ass_array[index1]}
别名 alias 命名
#!/bin/bash
alias install='sudo apt-get install'
获取终端信息tput、stty 打印行数、列数、终端名称 终端背景
#!/bin/bash
tput cols
tput lines
tput longname
获取时间 date
#!/bin/bash
date
获取一组命令执行时间
#!/bin/bash
start=${date+%s}
command;
end=${date+%s}
different=$((end - start))
echo $different
调试脚本 -x
#!/bin/bash
echo "hello world"
函数 function
#!/bin/bash
function fname()
{
ls;
}
fname
#!/bin/bash
function fname()
{
echo s1,s2;
echo "$@";
echo "$*";
return 0;
}
fname
- $@ :被扩展“
1
”
、
"
1”、"
1”、"S2"、“$S3”.
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"
获取一组命令执行时间
#!/bin/bash
echo "hello world"