#字符在linux shell中的含义
########判断符号#############
-eq 等于 =
-lt 小于 <
-le 小于等于 <=
-gt 大于 >
-lg 大于等于 >=
-ne 不等于 !=
#特殊符号
| 管道符 管道前命令运行的结果交给管道后的脚本执行
\ 转义字符 转义字符后跟的命令或符号不代表具体意义
/ 斜杠 在表示路径时常用于目录,在运算中代表除号
|| 或者 常用于判断语句中,代表or
&& 和 用于和的意思(与||用法基本相同)
! 感叹号 通常表示反逻辑作用
: 冒号 内建指令,在bash中一般没有实际意义,但返回的状态值为0
^ 尖括号 表示以什么开头
$ 变量表达,正则里表示行尾
#注释 表示这一行不执行(除了第一行的#!/bin/bash外【定义解释器】)
~ 波浪号 账户用户家目录
; 分号 连续指令 功能的符号
;; 连续分号 专用在 case 的选项,担任 Terminator 的角色
, 逗号 常用在运算中,当做分割的意思
? 问号 在扩展名中匹配任意一个字符但不包含null
. 就是dot 一般cd . . (一个dot代表当前目录,两个dot代表上一层目录)
星号 在扩展名中匹配任意字符,包含null(在运算中表示乘号)
**次方运算符
%计算余数
输出重定向符号
、>>、< 、<< 、<>、>&、>&2
((…)) 运算符号,作用类似于bc命令
$… 变量的引用
${…}变量的标准表达方式
$引用script的执行引用变量
$@与$基本相同,唯一不同就是符号$*将所有脚本视为一个整体,符号$@保留每个变量的区段概念
$#引用变量的相关符号,告诉你引用变量的数量
$? 表示状态值(一般执行完一个命令后可用此符号验证命令执行是否完成)
'string'和"string"单引号和双引号
双引号,如果要引用变量加入空格,就必须使用双引号
单、双引号的区别在于双引号转义特殊字符而单引号不转义特殊字符
`反引号command`和$(command)作用基本相同
[ ]中括号两种用法
1、通配符作用
ls /[eh][co][cm]*
2、常常出现在判断语句中
在正则表达式中充当“范围”或“集合”的角色
{ }大括号的用法
1、通配符作用
2、用于语句块的构造
3、扩展参数
${name:-default} 使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量name;
${name:=default}使用指定值来代替空的或者没有赋值的变量name;
${name:?message}如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。
${#name} 给出name的长度
${name%word} 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分
${name%%word} 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分
${name#word} 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分
${name##word} 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分
(注,name为变量名,word为要匹配的字符串)
用法三在处理字符串和未知变量时,是很有用的
####color code(在shell script中的color)######
RED="\e[31m"
GREEN="\e[32m"
YELLOW="\e[33m"
BLUE="\e[36m"
##while循环加判断#########
#输入的字符必须lt大于才可以
#!/bin/bash
read -p "money: " money
read -p "car: " car_num
read -p "house: " house
while [ $money -lt 100000 ] || [ $car_num -lt 1 ] || [ $house -lt 1 ]
do
echo "no"
read -p "money: " money
read -p "car: " car_num
read -p "house: " house
done
echo "Yes, for your"