蚣澡
昨天 00:05
shell 常用语法
初步使用 Linux中工具链的配置 变量 参数 条件判断 循环 输入读取 函数 正则表达式 文本处理工具
bash和shell的关系:shell是一个概念,bash是这个概念的一个具体实现。
初步使用
- #!bin/bash
- echo "Hello world!"
- echo
- # shell
- vim helloworld.sh
- chmod u+x helloworld.sh
- # 在当前bash运行
- . helloworld.sh
- source helloworld.sh
- # 在子bash中运行,无法修改当前shell的变量
- ./helloworld.sh
复制代码 Linux中工具链的配置
~/.bashrc用于定义当前用户的Bash shell 环境参数。每次打开终端时该文件就会执行。在~/.bashrc中添加- export ARCH=arm
- export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
- export PATH=$PATH:/home/ayuan/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
复制代码- alias ll='ls -l' # 输入 ll 等效于 ls -l
复制代码 变量
- # 常用系统变量
- echo $HOME; echo $PWD; echo $SHELL; echo $USER
- # 定义变量时,=号前后不能有空格
- # 全局变量定义,上层shell定义的全局变量下层可以查看修改,但是对上层没有影响
- export ARM=arm
复制代码 shell脚本中单引号和双引号的区别
- echo "hello $name" # hello world
- echo 'hello $name' # hello $name
复制代码 参数
- # 传入的参数个数
- $#
- # 传入的参数分别为
- $0; $1; $2;
- # 传入的所有参数,整体和分开
- $*; $@;
- # 最后一条命令的返回状态
- $?
- # 当前shell的进程ID
- $$
复制代码 条件判断
- if [ $1 -le $b ]
- then
- echo
- elif
- echo
- fi
- case $1 in
- "1")
- echo
- ;;
- "2")
- echo
- ;;
- *)
- echo
- ;;
- esac
- # 常用判断符号
- -eq -lt -le -gt -ge -ne
- -r -w -x
- -e # 文件存在
- -f # file
- -d # dir
- # 字符串比较
- = !=
- -z # 空串
- -n # 非空串
- # 逻辑
- -a -o !
复制代码 替换运算符
- ${var_name:-def_Val}
如果变量var_name存在且为非null,返回该变量的值,否则返回默认值def-Val
注意var_name与:之间没有空格,:与-之间可以有空格。主要用途,如果变量未定义,则用默认值。
- ${var_name:=val}
如果变量var_name存在且为非null,返回该变量的值,否则,把val的值赋给变量var_name,并返回var_name的值val。
注意var_name与:之间没有空格,:与=之间也不能有空格。
- ${var_name:?message}
如果变量var_name存在且为非null,返回该变量的值,否则返回该变量的名字var_name:提示信息meesage,并退出当前命令或脚本。
注意 var_name 与 : 之间没有空格,: 与 ? 之间也不能有空格。
- ${var_name:+val}
如果变量var_name存在且为非null,返回val,否则返回null。
注意 var_name 与 : 之间没有空格,: 与 + 之间也不能有空格。
- ${#val_name}
返回变量长度。
- $(())
算术运算操作。
- $((var1 opr var2))
例如: $((5+1)) 只能是 + - * / 和 () 运算符,并且只能做整数运算。
- $()
命令代换,类似于反引号(`), 例如:echo $(date)。
循环
[code]for i in $@do echo $idone#for((i=1;i |
|
|
|
|
|
相关推荐
|
|
|