在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
shell的简单使用 最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了下,方便以后随时回顾和查阅! 1. 综述
其实shell的开始并不难,第一行如下:
叫做shebang 注释 shell的注释以#开头(这点类似于python) 变量 变量定义:
注意定义和赋值时=两边均不能有空格,且变量名前不能加$! 变量使用:
或
或:
加上美元符后的变量会被替换为其值。注意,单引号中的不会被替换 命令执行结果赋给一个变量: lines=`wc -l 1.txt` # 这里lines就被赋值为了1.txt的行数 lines="$(wc -l 1.txt)" # 单撇号不能嵌套,可用这种包含在内 格式化变量:
字符串截取:
输出 shell中的输出直接用echo即可
等同于
输入:
多语句组合
echo "Always executed" || echo "Only executed if first command fails" echo "Always executed" && echo "Only executed if first command does NOT fail" echo "Always executed1" ; echo "Always executed2" 通道和重定向
2. 判断 最简单的判断逻辑是: if [ condition1 ]; then statement1 elif [ condition2 ]; then statement2 else statement3 fi # 或者用test if test condition1 ; then statement1 fi 注意:condition两边与[]之间必须至少有一个空格 判断条件 shell中判断条件不同于其他语言中的<,>,==,<=,>=那么直接,常见的有下列几种: -eq 等于(==) -ne 不等于(!=) -gt 大于(\>) -lt 小于(\<) -le 小于等于 -ge 大于等于 -z 空串 -n 非空串 == 两个字符相等 != 两个字符不等 组合判断 -a 且 -o 或 特殊用法 字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如 文件的判断 -f 判断后面是否为一个文件 -d 判断后面是否为一个目录 -e 判断后面对应的文件是否存在 -s 判断文件是否存在且不为空 switch case case "$Variable" in # 列出需要匹配的字符串 0) echo "There is a zero.";; 1) echo "There is a one.";; *) echo "It is not null.";; esac 3. 循环 for 循环 # {1..3} == `seq 1 3` for Variable in {1..3} do echo "$Variable" done 或传统的"for循环",但需要加两层括号(两层的小括号内可以写C语言中的语句): for ((a=1; a <= 3; a++)) do echo $a done 在其他命令的结果上执行for循环: for Output in $(ls) do cat "$Output" done while 循环 while [ condition ] do echo "loop body here..." break done 4. 命令行 $# 命令行参数个数 $0 当前脚本名 $n 第n个参数值,n可取1,2,3... $@ 所有命令行参数 $? 上一个命令的返回值 5. 其他常用命令 # 打印每行中 ',' 之前内容 cut -d ',' -f 1 file.txt # 将 file.txt 文件所有 'okay' 替换为 'great', (兼容正则表达式) sed -i 's/okay/great/g' file.txt # shell中不支持浮点数除法运算,可使用awk实现浮点除法 a=3 b=4 c=`awk 'BEGIN{printf "%.2f",('$a'/'$b')}'` # 单引号内的变量不能被替换,因此需要将变量单独放在引号外 本文简要介绍了下shell入门的一些用法,如有不对之处,欢迎大家指正。我也是不久前才开始真正使用shell,这是个强大而又复杂的语言,大家有比较好的shell资料也欢迎留言,共同学习,谢谢! 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持极客世界! |
请发表评论