shell 笔记
- 没有 '.'
- [Aa] 表示 A 或者 a
- ? 表示任意字符
- * 表示任意字符串
- data='name, sex, rollno, location'
- oldIFS=$IFS
- IFS=', '
- for i in $data; do
- echo $i;
- done
- $* 参数被作为一个单词 (这个变量很少被使用)
- $@ 参数按 IFS 分割
- $? 退出参数
- $$ 当前 shell 进程的 pid
- $! 后台运行的最后一个进程的 pid
- var='xxxx'
- length=${#var}
- length=`echo -n $var | wc -m`
- word=`echo -n $var | wc -w`
- s1='abc'
- s2='def'
- s3=`printf "%s%s" $s1 $s2`
- echo $s3
- var=${var-'value'} # 如果 var 没被声明, 就用 value
- a='abcd'
- echo ${a:0} # abcd
- echo ${a:1} # bcd
- echo ${a:1:2} # bc
- {$var#str} # 从开头删除 str
- {$var##str} # 从开头删除最长匹配的 str
- {$var%str} # 从结尾删除 str
- {$var%%str} # 从结尾删除最长匹配的 str
- dir=/etc/httpd/httpd.conf
- echo ${dir#/*/} # httpd/httpd.conf
- echo ${dir##/*/} # httpd.conf
- echo ${dir%/*/} # 没有删除任何
- echo ${dir%/*} # /etc/httpd
- echo ${dir%%/*} # 全部被删除 为空
- str='abc 123 def abc'
- echo ${str/abc /def} # def123 def abc
- echo ${str//abc/def} # def 123 def def
- echo ${str//[0-9]/} # abc def abc
- [ $var == "xxx" ]
- [ $var != "xxx" ]
- [ -n STRING ] # the length of STRING is nonzero
- [ -z STRING ] # the length of STRING is zero
- [ $num -eq 10 ]
- [ $num -ne 10 ]
- [ $num -lt 10 ]
- [ $num -le 10 ]
- [ $num -gt 10 ]
- [ $num -ge 10 ]
- [ -d $FILE_NAME ] # dir
- [ -e $FILE_NAME ] # exist
- [ -f $FILE_NAME ] # regular file
- [ -L $FILE_NAME ] # symbol link
- [ -r $FILE_NAME ]
- [ -w $FILE_NAME ]
- [ -x $FILE_NAME ]
- [ -S $FILE_NAME ] # socket
- [ -b $FILE_NAME ] # block
- [ -c $FILE_NAME ] # char
shell 的 $((RANDOM)) 会返回一个随机值
- if [ ${#} -eq 0 ]; then
- echo $((RANDOM))
- elif [ $1 == '--help' -o $1 == '-h' ]; then
- echo "usage: random num1, num2 [num1, num2)"
- elif [ ${#} -eq 1 ]; then
- echo $((RANDOM%$1))
- else
- echo $((RANDOM%(($2-$1))+$1))
- fi
- echo $((100 / 3))
- i=8
- echo $((i + 12))
- i=8
- let i=5+3 # '=' 两侧不允许有空格
- i=$((i+1))
- let i++
- # if
- if [ xxx ]; then
- xxx
- elif [ xxx ]; then
- xxx
- else
- xxx
- fi
- if [ xxx ] && [ xxx ]; then
- xxx
- fi
- # while
- while [ xxx ]; do
- xxx
- done
- while read line; do
- echo $line;
- done < input.txt;
- # for
- for i in `seq 1 10`; do
- echo $i;
- done
- for x in one two three four; do
- echo number $x
- done
- # case
- x="start"
- case $x in
- start)
- echo 'start'
- ;;
- stop)
- echo "stop"
- ;;
- *)
- echo stop
- ;;
- esac
- x="restart"
- case $x in
- start|restart)
- echo 'start'
- ;;
- stop)
- echo "stop"
- ;;
- *)
- echo stop
- ;;
- esac
- myvar="hello"
- myfunc() {
- myvar="one two three"
- for x in $myvar; do
- echo $x
- done
- }
- myfunc # 执行函数
- echo $myvar $x # one two three (说明变量是全局的)
- myvar="hello"
- myfunc() {
- local x
- local myvar="one two three"
- for x in $myvar; do
- echo $x
- done
- }
- myfunc
- echo $myvar $x # hello ($x 没有输出)
- repeat() {
- while true; do
- $@ && return
- sleep 5
- done
- }
子 shell 就是 () 里面的内容,相当于重新开启一个 shell。这样做的好处是 子 shell 里面做的事情不会影响到当前的 shell,比如定义变量,cd 到别的路径..
- pwd;
- (cd /bin; ls);
- pwd;
- declare -A arr
- arr=([index1]='abc' [index2]='def')
- echo ${arr[index1]}
- echo ${arr['index1']}
- arr[index3]='xyz'
- echo ${arr[index3]}
- for i in ${arr[@]}; do
- echo $i; # abc def xyz
- done
- for i in ${!arr[@]}; do
- echo $i; # index1 index2 index3
- done
- while getopts xyz opt; do
- case $opt in
- x)
- echo 'x'
- ;;
- y)
- echo 'y'
- ;;
- z)
- echo 'z'
- ;;
- ?)
- echo 'invalid'
- ;;
- esac
- done
- ./run -xyz (执行上面的代码)
- while getopts x:y:z: opt; do
- case $opt in
- x)
- echo 'x' $OPTARG
- ;;
- y)
- echo 'y' $OPTARG
- ;;
- z)
- echo 'z' $OPTARG
- ;;
- *)
- echo 'invalid'
- ;;
- esac
- done
- ./run -x abc -y def -z ghi
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/
shell 笔记的更多相关文章
- bash shell笔记1 脚本基础知识
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/505644 * ...
- Bash shell 笔记总结(一) 转自http://www.bubuko.com/infodetail-509992.html,谢谢原作者
本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变 ...
- Java中执行shell笔记
在java中执行shell有好几种方式:第一种(exec)方式一 public static synchronized void runshell2() { File superuser = n ...
- shell笔记
shell:俗称操作系统的"外壳",就是命令解释程序. 是用户与Linux内核之间的接口. 是负责与用户交互,分析.执行用户输入的命令,并给出结果或出错提示. ...
- shell笔记-local、export用法 、declare、set
local一般用于局部变量声明,多在在函数内部使用. 1. Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 2. ...
- shell笔记(基本知识)
一.编写第一个shell程序 实例1: [程序] #!/bin/sh echo "hello word !" [运行]
- shell笔记-local、export用法
local一般用于局部变量声明,多在在函数内部使用. 1. Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 2. ...
- 【转】Linux shell笔记
由于工作的需要,越来越多的接触到linux系统.最近看了<Linux与Unix Shell>这本书,安装书的章节整理了一些自己认为比较重要的命令,方便以后查阅. No.001 文件安全与权 ...
- shell笔记-常用
shell提取文件名: http://blog.csdn.net/u011544778/article/details/50773053 一.使用${} 1.${var##*/}该命令的作用是去掉变量 ...
随机推荐
- cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...
- 类似于QQ游戏百万人同时在线的服务器架构实现
http://blog.csdn.net/sodme/article/details/213995 —————————————————————————————————————————————————— ...
- (转载)javascript函数作用域和提前声明
http://www.cnblogs.com/ArthurPatten/p/3274080.html 一些语言如C.java都有块级作用域,即花括号内的每一段代码都具有各自的作用域,而且变量在声明它们 ...
- USB2.0规范
USB是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S. USB支持“总线供电”和“自供电”两种供电模式.在总线供电模式下,设备最多可以获得500mA的电流.U ...
- ems server
自DELPHI XE7始提供企业移动服务,方便移动等设备通过REST+JSON访问中间件提供的服务. EMS (Enterprise Mobility Services企业移动服务) 服务器给EMS客 ...
- Python基础 列表
---***---传送门---***--- 文档解释 def append(self, p_object): """ L.append(object) -> Non ...
- poj 1247 The Perfect Stall 裸的二分匹配,但可以用最大流来水一下
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16396 Accepted: 750 ...
- This is a sandbox of markdown
A First Level Header A Second Level Header Now is the time for all good men to come to the aid of th ...
- canvas加载gif
http://ernestdelgado.com/public-tests/gifoncanvas/ <!DOCTYPE html><html><head> < ...
- Spring Bean生命周期
1.Bean的建立:BeanFactory容器寻找Bean的定义信息,读取Bean定义文件,并将其实例化,生成各个Bean实例.2.属性注入:使用依赖注入,Spring按照Bean定义信息配置Bean ...