[Bash] Bash CheatPaper

赋值语句

var="xxx"   #不能有空格

条件判断

&&  逻辑的 AND 的意思
||  逻辑的 OR 的意思
if [ "$var" = "test" ];then
  echo "yes"
fi
-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较

字符串

  • 字符串长度
${#'abc'}   长度为3
  • 字符串打印并补空格
printf '%10s' 'hello'
  • 获取文件名
${var##*/}
该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。

使用例子及结果如下:

从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。

  • 获取某路径(如当前路径)所在的文件夹
dirname $0  获取当前脚本所在目录

数组

  • 字符串以空格分割存入数组
keys="abc ajk sb"
arr=($keys)          #arr[0]=abc, arr[1]=ajk, arr[2]=sb
  • 数组元素个数
${#arr[@]}
  • 数组所有元素的值
${arr[*]}  或  ${arr[@]}
  • 遍历数组
A:
       num=${#array[@]} 
       for((i=0;i<num;i++))
       {
           echo ${array[$i]};
       }
B:
      for var in ${array[@]}; do
          echo $var
      done

associate array

  • 定义
declare -A ass_arr
ass_arr=(
['key']='value',
["${key2_var}"]="val2"  
)
  • 引用关联数组元素
  echo "value = ${ass_arr[$key]}"
  ${!ass_arr[@]}    所有key
  ${ass_arr[@]}      所有value
  ${ass_arr[$key]}         $key所在元素的值
  • 遍历关联数组
 for key in ${!ass_arr[@]} 
 do
     echo "key = $key; value = ${ass_arr[$key]};"
 done
  • 关联数组作为bash函数参数
    (传参数名进去函数)
33 function sf
34 {
35     name=$1
36     str='${!';
37     str+=${name}
38     str+='[@]}'
39     eval "echo $str"
40 }
41
42 declare -A conf
43 conf[pou]=789
44 conf[mail]="ab\npo"
45 conf[doo]=456
46
47 sf "conf"
  • $()与``区别

what-is-the-difference-between-$()-and-``-in-shell-programming
The backticks/gravemarks have been deprecated in favor of $()
for command substitution because $()
can easily nest within itself as in $(echo foo$(echo bar))
. There are also minor differences such as how backslashes are parsed in the backtick/gravemark version.
See the POSIX spec for detailed information on the various differences.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,198评论 3 53
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,792评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,001评论 19 139
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,127评论 0 0
  • 另外非常深刻的一点体会就是城市,多么有趣。 我喜欢城市,喜欢在陌生的城市里,一个人,迷路游走。 为什么说我喜欢城市...
    Hushering阅读 620评论 0 0