Linux_shell
Posted 未央夜色
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux_shell相关的知识,希望对你有一定的参考价值。
变量
环境变量(局部变量)
所有的场景都能用
/etc/profile文件 source一下局部变量
只能在自己的shell函数或脚本中使用
变量定义
定义变量的三种方式:
- 直接定义
直接写。输出的时候是什么就是什么 - 单引号
输出的时候完全按照内容输出,不解析任何符号 - 双引号
输出的时候解析内容
适合字符串中含有变量的内容的形式。
echo '$a' #输出的是$a
echo "$a" #输出的是变量a的内容,是解析过的值
# 如果想输出特殊字符,必须要用到''单引号
echo '$'$a
# 输出的是$和解析后的变量a的内容
echo `date` # 输出当前时间
echo `date +%F` 输出各种时间。
# date + %FHSDM 都是输出时间的一部分,可以指定
习惯上数字不加引号,其他默认加双引号(尤其是在字符串中含有空格的情况下)
学习脚本的时候,多参考系统的默认脚本,是非常规范,具有参考性的。
用变量打包命令:
cmd="$(date)"
echo $cmd
特殊变量
$00 当前脚本的名字
$1 传入的第一个参数
$n 获取当前执行的脚本的第n个参数
$* 所有的参数。输出的时候把参数当做一个整体。
> "pa1 pa2 pa3"
$@ 所有的参数。输出的时候把参数当做单个的数据。
> "pa1" "pa2" "pa3"
$? 上一步是否成功执行
$# 参数的个数
$$ 获取当前进程的号
$! 上一个进程的PID
$_ 上一个脚本的参数
$? # 判断上一个命令是否成功执行。
$?是最常用的,上次成功执行输出0,否则输出127
变量替换表
考察变量定义了与否。
定义了—>返回定义值,返回设定的值
|—>返回null,返回word。
# **牢记**
$value:-word value定义了,就返回value,否则返回word
$value:=word value定义了,就返回value,否则设置value为word
$value:? "not defined" value定义了,返回定义值,否则显示变量名。
$value:+word value定义了,返回word,否则返回null
变量计算
(()) 执行简单的整数计算
简答的加减乘除# bash的内部变量
# 简单计算
((a=5**3-5))
echo $a
echo $((5**3-15))
echo $((a++))
echo $(())
echo $((450>333)) # bool,输出的是0/1
num=100
echo $(( $num-1 ))
a=$1
b=$2
echo $(( $a+$b ))
字符串
常用操作:
$#string 返回string的长度
$string:position 返回从pos位置开始的子串
$string:p1:length 返回从p1开始,长度为len的子串
$string#substring 从开头删除最短匹配的substring
$string##substring 从开头删除最长匹配的substring
$string% 从结尾删除最短匹配的substring
$string%% 从结尾删除最长匹配的substring
数组
数组的定义是用 ( )。
里面只用空格分开。
# 数组的定义
shuzu=(1 2 3 4 5)
echo $shuzu[@] # 输出数组的每个元素
echo $#shzuh # 输出数组的长度
echo $shuzu[n] # 输出数组中第n个元素
运算符
if [ $a -ne $b ]
then echo xxx
else echo yyy
fi
布尔运算符
- !返回非操作
- -o 或操作的结果
- -a 与操作的结果
逻辑运算符
- && 与
- || 或
加减乘除
比较运算符
- 关系运算符(返回bool值)
- -eq 是否相等
- -ne 是否相等
- -gt 左大于右
- -lt 左小于右
- -ge 左大于等于右
- -le 左小于等于右
循环控制
if
if/elif后一定要有then
if [ xx ]
then xxx
elif [ xx ]
then xxx
else xxx
fi
case
类似switch case结构。
case judge in
模式1) x1
模式2) x2
模式3) x3
模式4) x4
esac
for
循环结构
for val in seq
do
xxx
done
while
while xxx
do
xxxxxx
done
until
until xx
do
xxxx
done
函数
// 定义
function_name()
xxx
return value
// 使用
function_name
以上是关于Linux_shell的主要内容,如果未能解决你的问题,请参考以下文章