shell基本语法备忘
1、第一行要写明shell种类
echo "Hello World !~"
- 变量=前后不能有空格,字符串要用“或‘ 或 不用
- 变量是若定义的,不定义也可使用,既:值为空
- 变量可以用 { } 括起来,明确变量名称的范围
echo $v_name
echo $v_id
- 变量替换
- 变量截取
- 使用双引号的变量,可以调用变量,也可以使用转义符 '\'
v_name="LiKun"
v_id="${v_name}_aa"
echo $v_name
echo $v_id
LiKun
LiKun_aa
- 单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
v_name="LiKun"
v_id="${v_name}_aa"
echo $v_name
echo $v_id
LiKun
${v_name}_aa
- 字符串的长度和截取:
Kun
]}
]}
]}
echo ${array_name[@]} #输出数组所有元素 ,@也可用*
echo ${#array_name[@]} #输出数组长度
- 数值测试(以下参数只能判断数值类型)
| 参数 | 说明 |
|---|---|
| -eq | 等于则为真 |
| -ne | 不等于则为真 |
| -gt | 大于则为真 |
| -ge | 大于等于则为真 |
| -lt | 小于则为真 |
| -le | 小于等于则为真 |
if [ $num1 -eq $num2 ]
then
echo "这两个值相等"
else
echo "这两个值不相等"
fi
这两个值不相等
- 字符串测试
| 参数 | 说明 |
|---|---|
| == | 等于则为真 |
| != | 不相等则为真 |
| -z 字符串 | 字符串长度伪则为真 |
| -n 字符串 | 字符串长度不伪则为真 |
num1="aaa"
num2="bbb"
if [ "$num1" == "$num2" ] #注意此处【】和=前后要留有空格
then
echo "这两个值相等"
else
echo "这两个值不相等"
fi
这两个值不相等
num1="aaa"
if [ -z "$num1" ] #注意此处【】和=前后要留有空格
then
echo "这个字符串为空"
else
echo "这个字符串有值"
fi
这个字符串有值
num1="aaa"
if [ -n "$num1" ] #注意此处【】和=前后要留有空格
then
echo "这个字符串有值"
else
echo "这个字符串为空"
fi
这个字符串有值
- 文件测试
| 参数 | 说明 |
|---|---|
| -e 文件名 | 如果文件存在则为真 |
| -r 文件名 | 如果文件存在且可读则为真 |
| -w 文件名 | 如果文件存在且可写则为真 |
| -x 文件名 | 如果文件存在且可执行则为真 |
| -s 文件名 | 如果文件存在且至少有一个字符则为真 |
| -d 文件名 | 如果文件存在且为目录则为真 |
| -f 文件名 | 如果文件存在且为普通文件则为真 |
| -c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
| -b 文件名 | 如果文件存在且为块特殊文件则为真 |
cd /bin
if [ -e ./bash ]
then
echo 'The file already exists!'
else
echo 'The file does not exists!'
fi
The file already exists!
- (($a==$b)) 数值之间的比较
(($a==$b))
echo $?
- 计算器
- “(( ))” 双括号运算符使用,只能进行数值
语法:
((表达式1,表达式2…))
特点:
1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。
2、在双括号结构中,所有变量可以不加入:“$”符号前缀。
3、双括号可以进行逻辑运算,四则运算
4、双括号结构 扩展了for,while , if条件测试运算
5、支持多个表达式运算,各个表达式之间用“,”分开
))
echo $a
((a++))
echo $a
- 扩展逻辑运算
;
b)); #真返回8,假返回9
((b))
err2
ok
num1=1
num2=2
if [ $num1 -eq $num2 ]
then
echo "相等"
elif elif ((num1>num2)) # 比较的另一种写法,推荐 > < == if (($(($i%500))==0))
then
echo "大于"
else
echo "小于"
fi
小于
;;
*) echo 'You do not select a number between 1 to 4'
;;
esac
Good
echo "The value is: $i"
done
The value is
The value is
The value is
The value is
for i in 'str 1' 'str 2' 'str 3'
do
echo "The value is: $i"
done
The value is
The value is
total;
;i<=num;i++)) # 循环控制
do
((total+=i))
done
echo $total
COUNTER=0
while [ $COUNTER -lt 5 ] #或者 ((COUNTER<5))
do
COUNTER=$[COUNTER+1] #或者写成 COUNTER=$((COUNTER+1))
echo $COUNTER
done
demoFun(){
echo "This is your first shell function!"
}
echo "Function begin..."
demoFun
echo "Function end!"
Function begin...
This is your first shell function!
Function end!
return $(($aNum+$bNum))
}
funWithReturn
echo "$?"
The value of the second parameter is !
| 参数处理 | 说明 |
|---|---|
| $# | 参数个数 |
| $* | 以一个单字符串显示所有向脚本传递的参数 |
| $$ | 脚本运行的当前进程ID号 |
| $n | 第n个参数 |
| $@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
| $0 | 进程名或文件名 |
| $? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
echo $$
echo $#
echo $?
.
bb
[oracle@lk1 shell]$ ..sh aa.bb.cc
cc
for i in "$*"
do
echo $i
done
for i in "$@"
do
echo $i
done
shell基本语法备忘的更多相关文章
- 项目中oracle存储过程记录——经常使用语法备忘
项目中oracle存储过程记录--经常使用语法备忘 项目中须要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中.当中原表之中的一个的日期字段 ...
- SASS语法备忘
sass语法 关于sass 3.3.0更新说明——3.3.0 sublime相关插件为:scss语法高亮,sass语法高亮,编译,保存即编译,格式化 文件后缀名 sass有两种后缀名文件:一种后缀名为 ...
- Markdown语法备忘
标题 标题 标题是每篇文章都需要也是最常用的格式,在 Markdown 中,如果一段文字被定义为标题,只要在这段文字前加 # 号即可. # 一级标题 ## 二级标题 ### 三级标题 以此类推,总共六 ...
- LESS语法备忘
变量 很容易理解: @nice-blue: #5B83AD; @light-blue: @nice-blue + #111; #header { color: @light-blue; } 输出: # ...
- 常用Shell脚本命令(备忘)
此处纪录一些个人常用的Shell命令,留作复用 Linux 必备软件 Tmux 终端复用神器 zsh 无比强大Shell运行环境 oh my zsh 搭配zsh食用 uGet Linux下载工具 Do ...
- markdown 语法备忘
markdwon语法, 增加以下CSS代码,可以对markdwon语法产生的文件进行分页操作. <div style="page-break-after:always;"&g ...
- [学习笔记] Markdown语法备忘
Markdown语法总结 标题 # 这是一级标题 ## 这是二级标题 ### 这是三级标题 #### 这是四级标题 ##### 这是五级标题 ###### 这是六级标题 注意#后面要加空格 字体 ** ...
- C++语法备忘
记录一些C++的语法方便日后查看. 1.C++初始化语法 C++中新增加了两种初始化语法,其中大括号初始化器需要C++11以上的实现,使用时可以加等号,也可以不加,而且大括号中可以不包含任何东西,这种 ...
- PowerShell 语法备忘
1.挡可能出现 .0 的时候需要加上引号 2.使用 -Join 或者 + 进行字符串拼接 3.在cmd 命令下可以使用 set /a s=1+2 表示需要进行计算,而不是拼接
随机推荐
- ArrayList总结
ArrayList 1.extends AbstractList 实现List<E>->Collection<e>->Iterable,RandomAccess,S ...
- CentOS系统安装中文man手册
http://jingyan.baidu.com/article/f25ef25466bffc482c1b82b6.html
- leetcode 83
83. Remove Duplicates from Sorted List Given a sorted linked list, delete all duplicates such that e ...
- git备忘(长久更新)
一直想了解一下git,正好最近的有一个问题就是,实验室写的代码,怎么同步到自己宿舍的笔记本上面来.最开始想用dropbox,但是用VS的人都知道,工程文件里面会给你生成乱七八糟的很多东西,很占空间,d ...
- phalcon框架学习之view
phalcon框架的view分多级:全局-控制器视图-动作视图.视图由上到下,按层级嵌套. 全局视图 默认全局视图为Views/index.html,所有的页面展示时,默认调用此页面,在这个页面中必须 ...
- 【转】准确理解CSS clear:left/right的含义及实际用途
零.说点什么 好久没更新了.并不是在折腾什么大作,而是广度学习与实践中,加上婚礼等诸多大事,所以产出较少. 今天这篇也只是小作,博客是自己很好的学习工具,只要我学习不止,博客也会不断更新的. 我们平时 ...
- Vue.js学习 Item7 -- 条件渲染与列表渲染
v-if 在字符串模板中,如 Handlebars,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {{#if ok}} <h1>Yes</h1 ...
- js执行过程
正如我们了解的一样,当我们书写了JS程序之后,打开浏览器,我们的代码就可以开始运行了(当然保证你的代码没有问题,才能按照你的预期进行执行).刚才说的是JS执行的一个大的环境,今天我们学习一下,JS在解 ...
- js生成有缩进的表格
项目中用到用了两天时间想到的,记录下来,如有更好的方法,留言给我,谢谢! js做如下表格: json [{"id":302,"serviceId":15,&qu ...
- 15)Java &和&&
&,双目运算符:将两个表达式的值按二进制位展开,对应的位(bit)按值进行"与"运算,结果保留在该位上- 比如170&204对应二进制就是 1010101 ...