[Bash] Bash CheatPaper

2017-10-06  本文已影响31人  Quasars

赋值语句

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
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.

上一篇 下一篇

猜你喜欢

热点阅读