• Shell 编程基础之注意技巧


    • 退出状态
      bash中的内建命令虽然不创建新的进程,但也会有Exit Status,通常也用0表示成功非零表示失败,可以用特殊变量$?读出
    • 命令代换:`或$()
      user@ae01:~$ echo `date`
      Sat Oct 25 19:17:58 CST 2014
      user@ae01:~$
      
      user@ae01:~$ echo $(date)
      Sat Oct 25 19:18:16 CST 2014
      user@ae01:~$
    • 算术代换:$(())
      user@ae01:~$ echo $((1+1))
      2
      user@ae01:~$ i=1
      user@ae01:~$ echo $(($i+1))
      2
      
      user@ae01:~$ echo $((i+1))
      2
    • 单引号
      Shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的和回车也不例外,但是字符串中不能出现单引号。如果引号没有配对就输入回车,Shell会给出续行提示符,要求用户把引号配上对。例如:
      user@ae01:~$ echo 'hello word
      > '
      hello word
      
      user@ae01:~$
      user@ae01:~$ echo 'hello 
      > word'
      hello 
      word
      user@ae01:~$
    • 双引号
      双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:
      • $加变量名可以取变量的值
      • ``仍表示命令替换
      • $ 表示$的字面值
      • \` 表示`的字面值
      • " 表示"的字面值
      • \ 表示的字面值
    • user@ae01:~$ echo $HOME
      /home/user
      user@ae01:~$ echo "`date`"
      Sat Oct 25 19:31:46 CST 2014
      user@ae01:~$ echo "I'd say: "Go for it""
      I'd say: "Go for it"
      user@ae01:~$ echo ""
      > "
      "
      
      user@ae01:~$ echo "\"
      
      user@ae01:~$
    • bash 参数
      • $0 代表脚本在执行时的自身文件名;像上面执行时用的是相对路径,即显示执行时的$0为"./Parameter";若执行时用绝对路径“/home/kashu/Parameter”,则$0就会显示为“/home/kashu/Parameter”
      • $# 代表所有参数的总数量
      • $@ 代表 "$1","$2", "$3", "$4" 等等,即代表每个独立的变量参数,$1 代表第一个变量参数, $2 代表第二个变量参数
    • echo "$# parameters";
      
      echo -e \nUsing '$*';
              for p in $*;
              do
                      echo "[$p]";
              done;
              
      echo -e \nUsing '"$*"';
              for p in "$*";
              do
                      echo "[$p]";
              done;
      
      echo -e \nUsing '$@';
              for p in $@;
              do
                      echo "[$p]";
              done;
      
      echo -e \nUsing '"$@"';
              for p in "$@";
              do
                      echo "[$p]";
              done
      user@ae01:~$ ./test.sh 1 "2 3"
      2 parameters
      
      Using $*
      [1]
      [2]
      [3]
      
      Using "$*"
      [1 2 3]
      
      Using $@
      [1]
      [2]
      [3]
      
      Using "$@"
      [1]
      [2 3]
  • 相关阅读:
    OS + Multipass
    服务器间文件实时双向同步(rsync+inotify)
    全链路追踪 & 性能监控工具 SkyWalking 实战
    TCP Dup ACK linux kernel 3.2
    Ns3.35 errata Compilation on Python 3.10 systems
    LeetCode 108. Convert Sorted Array to Binary Search Tree
    LeetCode 98. Validate Binary Search Tree
    LeetCode 701. Insert into a Binary Search Tree
    LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
    LeetCode 783. Minimum Distance Between BST Nodes
  • 原文地址:https://www.cnblogs.com/tannerBG/p/4054366.html
Copyright © 2020-2023  润新知