Linux学习——shell

发布时间 2023-04-10 16:59:40作者: Air-JoJo

Linux

shell 语法

转义字符

\ :\后面的一个字符按照其字面意思解释
“ ”:双引号中的内容除$、`、“之外的任何字符的字面解释
‘ ’ :单引号中除 ' 以外的任何字符按其字面解释

shell变量

环境变量:标准变量,通常由管理员定义,用来保存系统必需内容
局部变量:由用户定义和控制 export 使变量变成环境变量(全局变量)

set 命令:查看当前使用的shell变量

变量赋值

shell的变量都是字符串

var1="string"
var2='string'
var3=string

使用变量

使用$f符号
echo $var
echo ${var} // {}可以用来替换变量

  • 只读变量 readonly
    var1=name
    readonly var1
    或者 declear -r var1
  • 获取字符串长度 echo $
  • 获取子串 echo ${var:l:r} //获取从l到r区间的子串
  • 注意,当变量名字与其他变量有重复部分,最好加上

删除变量

使用unset
unset var
删除后变量变成空字符串

特殊变量

$# 传入的参数个数
$* 所有参数
$@ 所有参数
$$ 当前进程id
$1-9 传入的参数
set 可以改变传入的参数
var1="one two three"
set 'echo var1'

注释

	# 这是单行注释
	:<<EOF
  	这是多行注释
  EOF
  其中EOF可以换成其他字符串,但是前后必须一样
  :<<xyz
  	这是多行注释
  xyz

数组

数组用小括号表示,元素之间用空格分开
array=(a b c d)
也可以直接用下标更改元素值
array[0]=1

${array[i]} 读取数组元素
${array[@]}读取整个数组
${array[*]}读取整个数组
${#array[@]}获取数组长度

循环语句

  • for in do done
for i in val1 val2 val3
do
	thing1
	thing2
done

也可以使用命令的输出作为循环范围

for i in `ls`
do 
	echo $i
done

也可以指定循环范围为连续的区间,用seq命令

for i int $(seq 1 10)  #输出1-10
do 
	echo $i
done

或者也可以这样写

for i in {1..10}  #字母也可以是{a..z}
do 
	echo $i
done
  • for((..;..;..)) do done
    类似于c语言的循环
for ((i=1;i<=10;i++))
do 
	echo $i
done
  • while do done
while condition
do 
	thing1
	thing2
done