成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊一聊腳本執(zhí)行方式,你學會了嗎?

系統(tǒng) Linux
Shell腳本的后綴一般為“.sh”,腳本第一行一般都是指向執(zhí)行Shell,例如“#!/bin/bash”。【#!】指定解釋腳本執(zhí)行的Shell。

[[408733]]

本文轉載自微信公眾號「Linux常用命令」,作者妖生。轉載本文請聯(lián)系Linux常用命令公眾號。

Shell腳本的后綴一般為“.sh”,腳本第一行一般都是指向執(zhí)行Shell,例如“#!/bin/bash”。【#!】指定解釋腳本執(zhí)行的Shell。

執(zhí)行Shell腳本有多種方式,我們可以直接使用【sh xx.sh】或者【bash xx.sh】來執(zhí)行Shell,也可以使用【./xx.sh】、【/shell/xx.sh】,或者【source .sh】、【. xx.sh】。

它們有什么區(qū)別呢?測試腳本如下:

  1. [root@yaomm shell]# cat testShell.sh    ##  查看演示Shell腳本 
  2. #!/bin/bash 
  3. cd /opt  ;          # 切換到/opt目錄去 
  4. pwds=`pwd`;         # 查看當前路徑 
  5. pids=$$;        # 查看當前進程 
  6. users=`whoami`; # 查看當前用戶 
  7. echo "當前路徑: ${pwds},當前進程PID:${pids},當前用戶: ${users}" 

sh方式執(zhí)行(也可以使用bash):

  1. [root@yaomm shell]# echo $$     ##  查看當前cli(命令行)界面的進程號 
  2. 22524                       ##  每次登錄Shell時打開的Shell界面進程號 
  3.  
  4. [root@yaomm shell]# sh testShell.sh             ##  使用bash執(zhí)行 
  5. 當前路徑: /opt,當前進程PID:10836,當前用戶: root ##  輸出當前切換路徑、進程號、用戶名 
  6. [root@yaomm shell]# echo $users             ##  子Shell中變量打印為空 

相對路徑方式執(zhí)行(也可以使用絕對路徑):

  1. [root@yaomm shell]# ./testShell.sh              ##  使用路徑執(zhí)行,沒有權限 
  2. -bash: ./testShell.sh: Permission denied            ##  沒有執(zhí)行權限 
  3. [root@yaomm shell]# chmod +x testShell.sh       ##  賦予執(zhí)行權限 
  4. [root@yaomm shell]# ./testShell.sh              ##  使用路徑執(zhí)行 
  5. 當前路徑: /opt,當前進程PID:10873,當前用戶: root ##  與bash執(zhí)行的結果類似 
  6. [root@yaomm shell]# echo $users             ##  子Shell中變量打印為空 

source方式執(zhí)行(也可以使用點.):

  1. [root@yaomm shell]# source testShell.sh         ##  使用source執(zhí)行 
  2. 當前路徑: /opt,當前進程PID:22524,當前用戶: root ##  進程號 
  3. [root@yaomm opt]#                           ##  看到當前目錄已經被切換到/opt下了 
  4. [root@yaomm opt]# echo $users               ##  source執(zhí)行,子Shell中變量被賦值 
  5. root            ##  $users成為全局環(huán)境變量,不過重新登陸Shell后還是會消失 

sh、source不需要執(zhí)行權限就可以運行Shell腳本,為什么?因為Shell腳本只是作為一個參數(shù)傳遞到sh、bash、source命令中,使用的是bash這些腳本的權限。而路徑執(zhí)行,則使用的是被執(zhí)行腳本文件本身的權限,所以需要賦權x。

sh與source執(zhí)行也是有區(qū)別的,sh執(zhí)行腳本會打開(fork)一個子進程(也叫子Shell、Sub Shell),Shell腳本內的環(huán)境變化不會影響到當前Shell進程(父進程、父Shell)。

source不創(chuàng)建Sub Shell,在當前Shell環(huán)境下讀取并執(zhí)行腳本文件中的命令,相當于順序讀取并執(zhí)行“.sh”文件里面的命令。

還有其他執(zhí)行腳本的方式,不常用,不再贅述。

最后,用一張表來總結下,Shell執(zhí)行的幾種方式和區(qū)別。

執(zhí)行命令 示例 權限 打開子進程 說明
sh、bash bash test.sh、h test.sh 不需要 sh、bash都是使用/usr/bin/bash
./、/ ./test.sh、/shell/test.sh 需要 相對路徑、絕對路徑執(zhí)行,需要有腳本文件的執(zhí)行權限
.、source . test.sh 、source test.sh 不需要 點+空格等同source,source執(zhí)行腳本相當于把腳本中語句逐行讀取并在命令行界面執(zhí)行
<、| sh>test.sh、cat tst.sh | bash 不需要 對有參數(shù)的腳本不支持
exec exec ./test.sh 需要 替換當前進程資源,不要在命令行界面執(zhí)行,否則登錄Shell界面會被直接關閉

 

責任編輯:武曉燕 來源: Linux常用命令
相關推薦

2024-05-06 00:00:00

InnoDBView隔離

2023-07-26 07:24:07

2021-07-16 11:48:26

模型 .NET微軟

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發(fā)編程

2024-09-26 09:10:08

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2023-12-27 09:32:47

SQL語句數(shù)據(jù)

2024-03-06 08:28:16

設計模式Java

2022-06-16 07:50:35

數(shù)據(jù)結構鏈表

2022-12-06 07:53:33

MySQL索引B+樹

2023-01-31 08:02:18

2023-10-06 14:49:21

SentinelHystrixtimeout

2022-07-13 08:16:49

RocketMQRPC日志

2023-05-05 06:54:07

MySQL數(shù)據(jù)查詢

2023-03-26 22:31:29

2023-08-26 21:34:28

Spring源碼自定義
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂一区 | 亚洲视频国产 | 中文字幕成人av | 国产精品久久99 | 久草.com | 免费高清av| 亚洲日产精品 | 一级免费视频 | 在线视频一区二区三区 | 色影视 | 久久国色 | 国产一级在线 | 人人九九| 中文字幕中文字幕 | 国产综合视频 | 国产精品久久久久久久久免费丝袜 | 一本色道精品久久一区二区三区 | 激情欧美一区二区三区 | 亚洲成人99 | 国产黄色小视频 | 欧美一区二区三区视频 | 成人三级影院 | 成人免费在线 | 中文字幕亚洲视频 | av大片在线观看 | 91人人视频在线观看 | 久久夜色精品国产 | 午夜99 | 国产欧美一区二区三区另类精品 | 国产成人精品综合 | 69亚洲精品 | 国产激情精品一区二区三区 | 男女羞羞视频在线 | 欧美极品在线播放 | 免费久久久 | 欧美精品被 | 久久国产精品视频 | 一a级片| 日韩毛片在线观看 | 在线观看免费福利 | 91成人免费观看 |