Bash 脚本语法
每次学了忘,忘了学,怎么记不住,因为长时间不用了
Bash 流程控制
循环
for循环
for item in $list
do
echo $item
done
另一种与C语言类似的写法
for((i=; i<; i++))
do
echo $i
done
双括号是个非常好的东西!
还有一种
for i in $(seq 5)do
done
seq还有第三个参数表示step
更叼的
for i in {..}
do
done
还可以指定{1..10..step}
条件分支
if [ -f $file_path ]; then
#do_something
fi
if 后面跟条件如为0则进入then分支,这个和C/C++不同,因为bash主要用来根据一些命令的成功与否进行进一步的操作,命令执行成功则返回0,失败则非零
一般在if后面总是跟个中括号,但它不是bash语法的一部分,[ 也是一个命令,是bash的内建命令,它的参数以]结尾,与命令test功能一致
条件取反
加!即可
类似C中的Switch语句
case "$VAR" in
itemA) cmd;;
itemB) cmd;;
*) cmd;;
esac
item可以使用通配符
常用文件检测
- -a file :file 存在
- -d file :file存在并是一个目录
- -e file :file 存在,同- a
- -f file :file 存在并且是一个常规的文件(不是目录或者其他特殊类型文件)
- -r file :有读的权限
- -s file :文件存在且不为空
- -w file :有写的权限
- -x file :有执行的权限,或者对于目录有search的权限
- -N file :在上次读取后,文件有改动
- -O file :own所属的文件
- -G file :group所属的文件
- file1 -nt file2 :file1 比 file2 更新,以最后更新时间为准
- file1 -ot file2 :file1 比 file2 更旧 ,以最后更新时间为准
常用整数判断
- -eq 等于 if [ "$a" -eq "$b" ]
- -ne 不等于 if [ "$a" -ne "$b" ]
- -gt 大于 if [ "$a" -gt "$b" ]
- -ge 大于等于 if [ "$a" -ge "$b" ]
- -lt 小于 if [ "$a" -lt "$b" ]
- -le 小于等于 if [ "$a" -le "$b" ]
- 另外可以使用(( ))在双括号内进行C风格的比较
numa=1
numb=2
if (($numa > $numb)); then
echo "$numa > $numb"
else
echo "$numa < $numb"
fi
常用字符判断
= 等于 if [ "$a" = "$b" ]
== 等于if [ "$a" == "$b" ] 与=等价.
<小于, 按照ASCII字符进行排序
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ] 注意"<"使用在[ ]结构中的时候需要被转义.
>大于, 按照ASCII字符进行排序
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ] 注意">"使用在[ ]结构中的时候需要被转义.
-z 字符串为"null", 意思就是字符串长度为零
-n 字符串不为"null".
S=a if [ "$S" == "b" ];then
echo "char is b"
elif [ "$S" == "a" ];then
echo "char is a"
else
echo "char is $S"
fi
尽量使用if与then在一行的方式,否则比较容易出错。
[]中使用条件与/或需要使用-o -a 进行连接不能用&&,||,但是[[]]可以,所以还是用[[]]吧,计算上也是使用(())来的方便
函数
sayhello() {
if [ $# -ge 1 ];then
echo "hello $1!"
else
echo "hello!"
fi
}
sayhello 'my friends'
函数调用时没有括号
参数参数通过dollar1,dollar2...获取
参考:
http://www.21andy.com/manual/advanced-bash-scripting-guide/comparison-ops.html
Bash 脚本语法的更多相关文章
- linux下bash脚本语法
1.shell中的变量定义和引用(1)变量定义和初始化.shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言:变量没有明确类型就是弱类型语言),和C语言不同.在shell编程中定义变量 ...
- Linux bash shell脚本语法入门
1.基础 #!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本 # //shell脚本注释符号 2.变量和使用 HOME= ...
- (转)Linux bash shell脚本语法入门
http://www.linuxsky.org/doc/newbie/201004/389.html 1.基础 #!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这 ...
- Bash 脚本编程语言中的美学与哲学
我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨 Bash 脚本语言中的美学与哲学. 这不是一篇 Bash 脚本编程的教程,但是却能让人更加深入地了解 Bash ...
- Bash脚本15分钟进阶指导
首先声明这是网上摘来的.这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有bash脚本都以下面几句为开场白: # ...
- 一个很不错的bash脚本编写教程
转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...
- Bash脚本15分钟进阶教程
转载: Bash脚本15分钟进阶教程 这里的技术技巧最初是来自谷歌的"Testing on the Toilet" (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有ba ...
- 脚本命令高级Bash脚本编程指南(31):数学计算命令
题记:写这篇博客要主是加深自己对脚本命令的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 高等Bash脚本编程指南(31):数学盘算命令 成于坚持,败于止步 操作数字 factor ...
- shell脚本语法基础汇总
shell脚本语法基础汇总 将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n) out=$(cat text.txt) 输出1 2 3 out="$(cat te ...
随机推荐
- postgreSQL PL/SQL编程学习笔记(四)
Errors and Messages 1. Reporting Errors and Messages Use the RAISE statement to report messages and ...
- Gym - 101908G 二分答案+最大流
After the end of the truck drivers' strike, you and the rest of Nlogônia logistics specialists now h ...
- zbar
源码下载链接:http://sourceforge.net/projects/zbar
- 黑马学习CSS之CSS模块化规范全部组成 CSS属性列表
- Spring学习笔记(三)—— 使用注解配置spring
一.使用步骤 1.1 导包 1.2 为主配置文件引入新的命名空间(约束) 在applicationContext.xml中引入context约束 1.3 编写相关的类 public class Use ...
- 【算法笔记】B1048 数字加密
1048 数字加密 (20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 ...
- POJ2248 Addition Chains 迭代加深
不知蓝书的标程在说什么,,,,于是自己想了一下...发现自己的代码短的一批... 限制搜索深度+枚举时从大往小枚举,以更接近n+bool判重,避免重复搜索 #include<cstdio> ...
- HDU 6299 Balanced Sequence(贪心)
题目:给出N个只有左右括号字符串 ,这N个字符串的排列顺序是任意的 , 问按最优的排序后 , 得到最多匹配的括号个数 分析: 我们很容易的想到 字符串)()()(( , 这样的字符串可以精简为)(( ...
- UVALive - 3722 找规律
题意:找规律 题解:找规律 结论是\(a^n(x-1)-\sum_{i=1}^{n-1}a^i \mod\ c\) #include<iostream> #include<algor ...
- ASP.Net Core 发布ABP项目遇到的错误
1.HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作 ...