shell中的set、seq、eval、exec、&&和||


一、set

查看set 幫助:

bash -c "help set"

選項:

  • -e:任何命令執行失敗(非0 status)直接退出
  • -x: 打印執行過程的命令行、參數
  • +e:命令執行失敗不會中斷退出
  • +x:不打印執行過程的命令行、參數

二、seq

seq: 打印數字序列

用法:seq first [incr] last

NAME
     seq -- print sequences of numbers

SYNOPSIS
     seq [-w] [-f format] [-s string] [-t string] [first [incr]] last
➜  blj seq 0 2
0
1
2

三、eval && exec

都是內建命令。

1.eval

  • bashshell中內建的一個命令,命令后面所跟的內容都認為是參數,但是會兩次掃描其參數:第一次掃描會將參數中的變量進行替換;第二次掃描會將后面的參數當作一個shell中的命令組合來執行命令。
  • 實際使用中,可以將任意組合的命令賦值給一個變量,然后在需要的位置通過 eval $variable 來執行這個命令。
  • 常見用法:
    1. 直接組合命令 : eval ls -al
    2. 替換變量
    3. 可以執行任何值為命令組合的變量
    4. 變量替換賦值

2.exec

  • 也是shell內建的一個命令。類似 eval、source,不同的是exec執行后面的命令會替換當前shell進程,而前兩者不會。
  • 常見用法:
    1. 用於分離執行腳本,並退出子腳本的shell進程
    2. 用於設置描述符重定向輸入文件內容
    3. 用於設置描述符重定向輸出內容至文件

四、&&和 ||

  • command1 && command2 [&& command3 ...]
    • 左邊的命令返回真后,右邊的命令才能夠被執行
    • 只要有一個命令返回假,后面的命令就不會被執行
  • command1 || command2
    • 只有左邊的命令返回假($? ==1),右邊的命令才能被執行,即實現短路邏輯或操作。
    • 只要有一個命令返回真,后面的命令就不會被執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM