shell 入门笔记
来源:互联网 发布:java能做网站吗 编辑:程序博客网 时间:2024/05/20 06:38
sh入门
“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo命令用于向窗口输出文本.
使用变量时要用 $ , 推荐加上花括号 {}
只读变量。
myUrl="http://see.xidian.edu.cn/cpp/shell/"readonly myUrl
删除变量。unset
特殊变量
$$ 表示PID,当前shell的id
变量
$* 和 $@ 的区别
但是当它们被双引号(” “)包含时,”
退出状态
$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。
不过,也有一些命令返回其他值,表示不同类型的错误。
指令
- echo :会自动换行
- printf:不会自动换行
这里仅说明与C语言printf()函数的不同:printf 命令不用加括号format-string 可以没有引号,但最好加上,单引号双引号均可。参数多于格式控制符(%)时,format-string 可以重用,可以将所有参数都转换。arguments 使用空格分隔,不用逗号。
# format-string为双引号$ printf "%d %s\n" 1 "abc"1 abc# 单引号与双引号效果一样 $ printf '%d %s\n' 1 "abc" 1 abc# 没有引号也可以输出$ printf %s abcdefabcdef# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用$ printf %s abc defabcdef$ printf "%s\n" abc defabcdef$ printf "%s %s %s\n" a b c d e f g h i ja b cd e fg h ij# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替$ printf "%s and %d \n" and 0# 如果以 %d 的格式来显示字符串,那么会有警告,提示无效的数字,此时默认置为 0$ printf "The first program always prints'%s,%d\n'" Hello Shell-bash: printf: Shell: invalid numberThe first program always prints 'Hello,0'$
- chmod
- read
- date :时间
- who
-
Shell 替换
#!/bin/basha=10echo -e "Value of a is $a \n"
这里 -e 表示对转义字符进行替换,不用-e 将输出Value of a is 10\n
命令替换
命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。
命令替换的语法:command
注意是反引号,不是单引号,这个键位于 Esc 键下方。
变量替换
变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值
可以使用的变量替换形式:
Shell 运算符
加法:
#!/bin/bashval=`expr 2 + 2`echo "Total value : $val"
两点注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。完整的表达式要被 “包含,注意这个字符不是常用的单引号,在 Esc 键下边。
#!/bin/sha=10b=20val=`expr $a + $b`echo "a + b : $val"val=`expr $a - $b`echo "a - b : $val"val=`expr $a \* $b`echo "a * b : $val"val=`expr $b / $a`echo "b / a : $val"val=`expr $b % $a`echo "b % a : $val"if [ $a == $b ]then echo "a is equal to b"fiif [ $a != $b ]then echo "a is not equal to b"fi
- 乘号(*)前边必须加反斜杠()才能实现乘法运算;
- if…then…fi 是条件语句,后续将会讲解。
关系运算符
if [ $a -ne $b ]then echo "$a -ne $b: a is not equal to b"else echo "$a -ne $b : a is equal to b"fi
布尔运算符
文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。
#!/bin/shfile="/var/www/tutorialspoint/unix/test.sh"if [ -r $file ]then echo "File has read access"else echo "File does not have read access"fiif [ -w $file ]then echo "File has write permission"else echo "File does not have write permission"fiif [ -x $file ]then echo "File has execute permission"else echo "File does not have execute permission"fiif [ -f $file ]then echo "File is an ordinary file"else echo "This is sepcial file"fiif [ -d $file ]then echo "File is a directory"else echo "This is not a directory"fiif [ -s $file ]then echo "File size is zero"else echo "File size is not zero"fiif [ -e $file ]then echo "File exists"else echo "File does not exist"fi
字符串
单引号
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号
your_name='qinjx'str="Hello, I know your are \"$your_name\"! \n"
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
获取字符串长度
string="abcd"echo ${#string} #输出 4
提取子字符串
string="alibaba is a great company"echo ${string:1:4} #输出liba
查找子字符串
string="alibaba is a great company"echo `expr index "$string" is`
数组定义
定义数组
在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
array_name=(value1 … valuen)
例如:
array_name=(value0 value1 value2 value3)
读取数组
读取数组元素值的一般格式是:
${array_name[index]}
例如:
valuen=${array_name[2]}
使用@ 或 * 可以获取数组中的所有元素,例如:${array_name[*]}${array_name[@]}
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数length=${#array_name[@]}# 或者length=${#array_name[*]}# 取得数组单个元素的长度lengthn=${#array_name[n]}
if … else… 语句
if [ expression ]then Statement(s) to be executed if expression is truefi
如果 expression 返回 true,then 后边的语句将会被执行;如果返回 false,不会执行任何语句。
最后必须以 fi 来结尾闭合 if,fi 就是 if 倒过来拼写,后面也会遇见。
注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。
test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
- shell script 入门 笔记
- Shell入门笔记
- shell入门学习笔记
- shell 入门笔记
- shell笔记(1):shell入门
- shell编程笔记-入门概念
- linux shell编程入门笔记
- shell——入门笔记
- linux shell编程入门笔记
- Linux入门笔记3. shell语法入门
- 笔记:Linux shell(一): 简单入门
- shell学习笔记之一——入门
- shell入门笔记(更新SVN脚本)
- Shell入门之脚本管理学习笔记
- Shell入门之测试操作学习笔记
- Shell入门之条件循环学习笔记
- Shell入门之函数学习笔记
- Linux Shell学习笔记1:Linux入门
- linux中man 2与man 3区别
- Android开发10个常用工具类
- iOS解决NSArray、NSDictionary打印乱码问题
- 系统吞吐量(TPS)、用户并发量、性能测试概念和公式
- 原生ajax的书写
- shell 入门笔记
- spring Boot将404,500等error页面转换成json传给前台
- 文章标题
- mac mkdir read-only filesystem
- 【SC17观察】HPC与AI加速融合背后 GPU重新定义超算市场
- 李沐等:MXNet设计和实现简介
- 这种辣眼睛的键盘,谁爱用谁用
- 文章标题
- git项目的下载和导入