1.变量赋值
a=123
read name
b=$(ls /home) 把命令的执行结果赋值给变量
2.使用变量(前面用$)
echo $a
let a=a+1
2.系统变量
$0 这个程序的执行名字
$n 这个程序的第n个参数值,n=1...9
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个程序的PID
$! 执行上一个背景指令的PID
$? 上一个指令的返回值
3.if语句
if [ "22" -lt "33" ]注意空格
then
echo "22 less than 33"
else
echo "no"
fi
4.case语句
#!/bin/bash
echo "enter a number"
read ans
case $ans in
1)
echo "you numer is $ans"
;;
2)
echo "you number is 2"
;;
[3-9])
echo "you number is $ans"
esac
5.比较运算符
运算符 描述 示例
文件比较运算符
-e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]
filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string 长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string 长度非零,则为真 [ -n "$myvar" ]
string1 = string2 如果 string1 与 string2 相同,则为真 [ "$myvar" = "one two three" ]
string1 != string2 如果 string1 与 string2 不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符
num1 -eq num2 等于 [ 3 -eq $mynum ]
num1 -ne num2 不等于 [ 3 -ne $mynum ]
num1 -lt num2 小于 [ 3 -lt $mynum ]
num1 -le num2 小于或等于 [ 3 -le $mynum ]
num1 -gt num2 大于 [ 3 -gt $mynum ]
num1 -ge num2 大于或等于 [ 3 -ge $mynum ]
6.while语句
X=1
while [ $x -le 10 ]
do
echo hello X is $X
let X=X+1
done
7.循环方式
bash中的for循环有几种方式:
1.for name [ in word ] ; do list ; done
2.for (( expr1 ; expr2 ; expr3 )) ; do list ; done//注意有2层括号
其中list简单说就是一串由操作符(operator ;、&、&&、||)分隔开的管道(pipeline)序列,详情参看man bash
各给出一个简单例子:
for filename in `ls`
do
cat $filename
done
for((i=0; i<10; i++))
do
echo $i
done
8.判断条件
1.条件变量替换: Bash Shell可以进行变量的条件替换,既只有某种条件发生时才进行替换,替换 条件放在{}中. (1) ${value:-word} 当变量未定义或者值为空时,返回值为word的内容,否则返回变量的值. (2) ${value:=word} 与前者类似,只是若变量未定义或者值为空时,在返回word的值的同时将 word赋值给value (3) ${value:?message} 若变量以赋值的话,正常替换.否则将消息message送到标准错误输出(若 此替换出现在Shell程序中,那么该程序将终止运行) (4) ${value:+word} 若变量以赋值的话,其值才用word替换,否则不进行任何替换 (5) ${value:offset} ${value:offset:length} 从变量中提取子串,这里offset和length可以是算术表达式. (6) ${#value} 变量的字符个数 (7) ${value#pattern} ${value##pattern} 去掉value中与pattern相匹配的部分,条件是value的开头与pattern相匹配 #与##的区别在于一个是最短匹配模式,一个是最长匹配模式. (8) ${value%pattern} ${value%%pattern} 于(7)类似,只是是从value的尾部于pattern相匹配,%与%%的区别与#与##一样 (9) ${value/pattern/string} ${value//pattern/string} 进行变量内容的替换,把与pattern匹配的部分替换为string的内容,/与//的区 别与上同 注意:上述条件变量替换中,除(2)外,其余均不影响变量本身的值
9.运算符
在Bash Shell中,只能进行两个整数间的运算,其结果仍为整数.要进行算术 运算,需要使用let命令,语法为: let expr expr是一个包含项和操作符的表达式,项可以是一个变量或是一个整数常数, 当使用整数常数时,其默认为十进制整数,用户可以用radio#number来指定其它 形式的整数,其中radio定义了整数是几进制表示的,number是该整数的值.若 radio>10,那么数字字符可从0-9和A-Z. 在表达式中支持的操作符及其含义为: +,-,*,/,% 加,减,乘,除,取模 >>,<<,&,^,| 左移,右移,位与,位异或,位或 ?: 三元运算符.与C语言中的定义一致 ~ 取补码 !,>=,<=,>,<,==,!=,&&,|| =,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|= 表达式式中也可以使用括号.括号或运算优先级的定义与一般计算机语言中的 相同. let命令具有返回值.当计算结果(若有多个表达式时,以最后一个为准)为0时, 返回值为1,否则为0. 当表达式中含有shell的特殊字符(如|)时,需要用引用符('或")将其引用起来. 使用let时还需要注意的时,对于let x+y这样的式子,shell虽然计算了x+y的值 但却将结果丢弃,若不想这样,可以使用let sum=x+y将x+y的结果保存在变量sum中 另外还可以使用((和))操作符取代let命令,而且这样的话,还可以省去对算术 表达式的引用,如果想返回表达式的值,则需用$(())的格式。
10.set命令
使用set命令可以设置各种shell选项或者列出shell变量.单个选项设置常用的特性. 在某些选项之后-o参数将特殊特性打开.在某些选项之后使用+o参数将关闭某些特性, 不带任何参数的set命令将显示shell的全部变量.除非遇到非法的选项,否则set总是 返回ture. 当BASH shell被调用时,可以列出全部的选项.当前的选项集列在$-中.在option参数 被处理后,其他的参数被赋值到位置参数中($1,$2,...,$n) set [--abefhkmnptuvxldCHP] [-o option name] [arguments ...] 源码: 选项 说明 -a 自动向已经修改的变量或为导出后序命令的变量作出标志 -b 不是在原提示符之前,而是立即引发终止后台任务的状态表表 -e 如果命令带非零值返回,立即退出 -f 禁止带扩展名的路径 -h 定义函数时,定位和存储函数命令,当函数被执行时,通常查询 函数命令 -k 所有的关键词参数,而不只是那些命令名前的关键词参数,被放 在环境命令中 -m 监视器模式,启动任务控制.此选项默认支持系统shell交互.后 台进程以单独的进程组运行,在每次完成任务时显示包含退出的 状态行 -n 读取命令但不执行命令.通常监查shell脚本的句法错误.交互 shell被忽略 -o option-name 选项名可以是下列之一: 选项 说明 allexport 同-a选项 braceexpand shell执行花括号扩展,在默认情况下起作用 emacs 使用emacs风格命令行编辑接口.除非shell以-noline-editing 选项启动,否则当shell交互时,通过默认启动该选项 errexit 同-e选项 histexpand 同-H选项 ignoreeof 其结果是好像shell命令IGNOREEOF=10被执行 interactive 允许单词前带#号,以使得在交互shell中忽略命令行的全部字符 -commands monitor 同-m选项 noclobber 同-C选项 noexec 同-n选项 noglob 同-f选项 nohash 同-d选项 notify 同-b选项 nounset 同-u选项 physical 同-p选项 posix 改变BASH属性以匹配标准,默认操作不同于POSIX1003.2标准 verbose 同-v选项 vi 使用vi风格的命令行编辑器 XTRACE 同-x选项,如果没有给出选项名,显示当前选项值 -p 打开特权模式(在此模式,$ENV文件被处理,不能从环境中继承 shell函数.如果是有效用户ID而不是实用户组则自动启动.关闭 此选项将使得有效用户和组IDs设置实用户和组IDs) -t 在读取命令并执行之后退出 -u 当执行参数括展时,把非设置变量作为错误处理(如果扩展企图 出现在非设置变量中,shell显示错误信息.如果不是交互式,则 带非凌值退出) -v 输入行被读取时,显示shell输入行 -x 在每个简单命令被扩展之后,显示PS4扩展值,之后是要执行的命令 -l 保存和恢复绑定在命令中的名称 -d 禁止执行查找散列命令(通常,命令被保存在散列表中,一旦被找到 就不再继续查找) -C 效果好像是执行了noclobber=shell命令 -H 使用!风格的历史替代(当shell交互时,在默认情况下,此选项有效) -P 如果设置此参数,当执行改变目录命令cd时,不遵循符号链接,而是 使用实际的目录 -- 如果在选项后没有参数,不设置位置参数.否则,即使一些参数以a 选项开始,也要把位置参数设置为argument - 结束选项的信号,将引发其余的参数被赋值到位置参数中(-x和-v 选项被关闭.如果没有argument,位置参数将保留未改变的参数)
11.函数
函数的使用 BASH 是一个相对简单的脚本语言,不过为了方便结构化的设计,BASH 中也提供了函数定义的功能。BASH 中的函数定义很简单,只要向下面这样写就可以了: function my_funcname { code block } 或者 my_funcname() { code block } 上面的第二种写法更接近于 C 语言中的写法。BASH 中要求函数的定义必须在函数使用之前,这是和 C 语言用头文件说明函数方法的不同。 更进一步的问题是如何给函数传递参数和获得返回值。BASH 中函数参数的定义并不需要在函数定义处就制定,而只需要在函数被调用时用 BASH 的保留变量 $1 $2 ... 来引用就可以了;BASH 的返回值可以用 return 语句来指定返回一个特定的整数,如果没有 return 语句显式的返回一个返回值,则返回值就是该函数最后一条语句执行的结果(一般为 0,如果执行失败返回错误码)。函数的返回值在调用该函数的程序体中通过 $? 保留字来获得。下面我们就来看一个用函数来计算整数平方的例子: #!/bin/bash square() { let "res = $1 * $1" return $res } square $1 result=$? echo $result exit 0
http://www.cublog.cn/u/3374/showart_225918.html
分享到:
相关推荐
本文将详细解读《Linux命令大全完整版.pdf》中所收录的各类命令,以帮助读者更好地理解和运用Linux命令。 1. Linux系统管理命令 系统管理命令是Linux系统中最重要的命令类别之一,涵盖了用户管理、进程控制、系统...
Linux命令速查手册作为一本全面介绍Linux命令的参考书籍,由美国作者Scott Granneman所著,并由成保栋与李保强翻译成中文版本。本书是图灵系统与网络管理技术丛书之一,适合所有与Linux相关的工作人员以及初学者,...
Linux 命令大全搜索工具提供了一个详细的命令列表,包括 A series 命令、apachectl 命令、arp 命令、atop 命令、awk 命令、axel 命令等。这些命令涵盖了 Linux 系统中的各种功能,例如文件管理、网络管理、系统管理...
Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 Linux命令大全 ...
Linux命令大全(CHM格式离线版) Linux命令大全(修改版) 进行重新编译的说明 文件传输 bye ftp ftpcount ftpshut ftpwho ncftp tftp uucico uucp uupick uuto 备份压缩 ar bunzip2 bzip2 bzip2recover compress cpio ...
Linux 命令全集.chm
Linux课件(ppt)外加一个《Linux命令大全》: Linux_内核完全注释_V11.pdf VI的常见用法.doc 第1章 Linux概况及安装.ppt 第2章 Linux的常用命令.ppt 第3章 Linux系统管理.ppt 第4章 Linux网络基础.ppt 第5章 ...
linux命令壁纸1920*1080尺寸,留有快捷键放置空间,方便对linux操作系统中各个命令的记忆。
Licote是Linux command template的缩写,顾名思义就是Linux命令模板。用于快速编写一个linux环境的命令程序,当然如果你愿意,你可以用于任何程序中;Licote的主要任务就是帮助你解析linux环境下的常用命令选项,让...
linux 命令 - 开关机 - 文件操作 - 系统命令 1. top 2. who 3. ifconfig 4. ping 5. kill 6. man 7.clear 8.netstat 4. 软件管理 - dpkg :离线 .deb .rpm .apk - apt-get :在线 5. 压缩解压 tar -...
Licote是Linux command template的缩写,顾名思义就是Linux命令模板。用于快速编写一个linux环境的命令程序,当然如果你愿意,你可以用于任何程序中;Licote的主要任务就是帮助你解析linux环境下的常用命令选项,让...
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统...
linux命令大全linux指令大全(完整篇).pdf
Linux命令GNU官方源码,是coreutils-common-8.24这个软件包的命令,包含cp、mv、chgrp、chown等大多数基本命令,对学习C语言的人会有很大帮助,可以看看大神都是怎么写代码的TnT
《最全常用Linux命令集》.pdf
Linux 命令详解词典.pdf,施威铭研究室著,大小 74 MB,被压缩成两部分分别上传。这是第二部分,第一部分下载地址:http://download.csdn.net/source/2685010。 本书精选了 381 个 Linux 命令,详细罗列 1729 个范例...
linux命令汇总linux命令汇总+Linux命令大全linux命令汇总+Linux命令大全linux命令汇总+Linux命令大全linux命令汇总+Linux命令大全linux命令汇总+Linux命令大全linux命令汇总+Linux命令大全linux命令汇总+Linux命令...