美文网首页
[Bash] Bash CheatPaper

[Bash] Bash CheatPaper

作者: Quasars | 来源:发表于2017-10-06 22:01 被阅读31次

赋值语句

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.

相关文章

网友评论

      本文标题:[Bash] Bash CheatPaper

      本文链接:https://www.haomeiwen.com/subject/kqoryxtx.html