shell 学习记录
2015-12-01 20:59
627 查看
1、 以两个破折号(--) 来表示选项结尾的用法, 源自System V。自此之后命令行上看起来像选项的任何项目,都将
一视同仁的当成参数处置。
上面这个句话是什么鬼意思???
2、shell是别的三种命令
1、内建命令(比如cd echo test)
2、shell函数
3、外部命令
shell变量
1、 变量名字=字符 中间没有任何空格
当赋予的值内含空格时, 请加上引号。 比如 : printname="the is English"
2、 当变量作为第二个变量的新值时,不需要使用双引号, 但是使用双引号也没有关系。
fullname=$printname
或者是fullname="$printname" 这两个都可以
3、 当你将变量链接起来的时候,就需要引号了。
比如: fullname="$first $second $third"
重定向与管道
1、 以 < 改变标准输入
2、 以 >改变标准输出
3、 以 >>附加到文件
4、 以| 建立管道 , progarm1 | program2 :将program1的标准输出修改为program2的标准输入
虽然 > 和 < 可将输入与输出连接到文件, 不过管道可以把两个以上执行中的程序衔接到一起。
tr [options] source-char-list replace-char-list:
-d 自标准输入删除 source-cahr-list所列的字符,而不是转换
-s 如果重复出现source-char-list中的字符,会将其浓缩为一个
如果没有参数那么就是 替换作用 。
tr 'a' 'b' 就是把a换成b
tr ‘test’ 'b' 只要遇到test这四个字符,都被替换成b
tr 'hello' 'world' 把 Hello 这个字符串替换为字符串 world
/dev/tty 是一个特殊的文件,当程序打开它时,UNIX会自动把它重定向到一个终端。 这程序在必须读取人工输入时特别有用。
printf "Enter new Password"
stty -echo #用来关闭自动打印每个输入字符的功能
read pass < /dev/tty
printf "Enter again:"
read pass2 < /dev/tty
stty echo
可是如果关闭自动打印,不从/dev/tty读也可以实现同样的功能? 那还为什么用这种麻烦的方式列?
shell脚本中的整数运算
有以下的几种方法:
1、使用let操作: let表达式内变量不用加空格(运算符之间不能有空格),let必须是完整的算术表达式,既有等号两边
var=1
let var2=var+2
2、用 (()) 来代替let, (() 这种用法可以只有等号右边的计算,不一定需要等号及等号左边的内容
比如上述的运算使用 ((var2=var+2)) , 也可以使用var2=$((var+2))
。在里面的var可以加上$也可以不加
即var2=$(($var+2)) 和上面的两个语句是一样的功能
3、使用 var2=$[$var1+2] 或者使用var2=$[var+2] 方括号括起来也可以
4、使用expr和使用 (()) 一样可以是完整算术表达式也可以不完整,即可以没有等号和等号左边的。
但是必须注意的是,运算符和参数之间必须要有空格。 另外 下面的两个点 是 数字1左边的 ` 而不是单引号。
var2=`expr $var + 1`
一视同仁的当成参数处置。
上面这个句话是什么鬼意思???
2、shell是别的三种命令
1、内建命令(比如cd echo test)
2、shell函数
3、外部命令
shell变量
1、 变量名字=字符 中间没有任何空格
当赋予的值内含空格时, 请加上引号。 比如 : printname="the is English"
2、 当变量作为第二个变量的新值时,不需要使用双引号, 但是使用双引号也没有关系。
fullname=$printname
或者是fullname="$printname" 这两个都可以
3、 当你将变量链接起来的时候,就需要引号了。
比如: fullname="$first $second $third"
重定向与管道
1、 以 < 改变标准输入
2、 以 >改变标准输出
3、 以 >>附加到文件
4、 以| 建立管道 , progarm1 | program2 :将program1的标准输出修改为program2的标准输入
虽然 > 和 < 可将输入与输出连接到文件, 不过管道可以把两个以上执行中的程序衔接到一起。
tr [options] source-char-list replace-char-list:
-d 自标准输入删除 source-cahr-list所列的字符,而不是转换
-s 如果重复出现source-char-list中的字符,会将其浓缩为一个
如果没有参数那么就是 替换作用 。
tr 'a' 'b' 就是把a换成b
tr ‘test’ 'b' 只要遇到test这四个字符,都被替换成b
tr 'hello' 'world' 把 Hello 这个字符串替换为字符串 world
/dev/tty 是一个特殊的文件,当程序打开它时,UNIX会自动把它重定向到一个终端。 这程序在必须读取人工输入时特别有用。
printf "Enter new Password"
stty -echo #用来关闭自动打印每个输入字符的功能
read pass < /dev/tty
printf "Enter again:"
read pass2 < /dev/tty
stty echo
可是如果关闭自动打印,不从/dev/tty读也可以实现同样的功能? 那还为什么用这种麻烦的方式列?
shell脚本中的整数运算
有以下的几种方法:
1、使用let操作: let表达式内变量不用加空格(运算符之间不能有空格),let必须是完整的算术表达式,既有等号两边
var=1
let var2=var+2
2、用 (()) 来代替let, (() 这种用法可以只有等号右边的计算,不一定需要等号及等号左边的内容
比如上述的运算使用 ((var2=var+2)) , 也可以使用var2=$((var+2))
。在里面的var可以加上$也可以不加
即var2=$(($var+2)) 和上面的两个语句是一样的功能
3、使用 var2=$[$var1+2] 或者使用var2=$[var+2] 方括号括起来也可以
4、使用expr和使用 (()) 一样可以是完整算术表达式也可以不完整,即可以没有等号和等号左边的。
但是必须注意的是,运算符和参数之间必须要有空格。 另外 下面的两个点 是 数字1左边的 ` 而不是单引号。
var2=`expr $var + 1`
相关文章推荐
- shell脚本学习(二)
- spark-shell on yarn 出错解决【启动命令bin/spark-shell --master yarn-client出现错误,类ExecutorLauncher 找不到】
- 企业shell编程基础问题解决实践-是骡子是马溜溜!
- linux shell单引号、双引号及无引号区别 【转】
- Linux shell命令
- Linux Shell 命令学习一
- linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法
- Linux Shell根据进程名杀死进程
- shell脚本的调试技巧
- shell脚本步骤调试
- Linux下/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc的区别
- shell之gollum安装+注释
- shell之nginx安装+负载均衡+会话保持
- GitBash 下如何解决javac/java编译运行乱码问题
- ubuntu bash提示找不到文件或目录
- 说说 bash 的 if 语句
- linux上mysql远程备份和自动导入到指定数据库的shell脚本
- Hive常用的SQL命令操作(hive shell下show functions显示所有可用的函数,describe function 函数名查看具体用法)
- shell 中 贪婪匹配 和 非贪婪匹配
- shell终端使用