0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

執(zhí)行shell腳本的方式包括什么

科技綠洲 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2024-08-30 15:17 ? 次閱讀

執(zhí)行Shell腳本的方式有很多種,以下是一些常見的方法:

  1. 直接運(yùn)行腳本文件

在命令行中,可以直接使用腳本文件的路徑來運(yùn)行腳本。例如:

./script.sh

這種方式需要確保腳本文件具有可執(zhí)行權(quán)限,可以使用chmod命令來設(shè)置:

chmod +x script.sh
  1. 使用bash命令

可以使用bash命令來運(yùn)行腳本文件,例如:

bash script.sh

這種方式不需要腳本文件具有可執(zhí)行權(quán)限,但是需要指定腳本的解釋器為bash。

  1. 使用source命令

可以使用source命令來運(yùn)行腳本文件,例如:

source script.sh

這種方式會將腳本中的命令在當(dāng)前shell環(huán)境中執(zhí)行,而不是創(chuàng)建一個新的子shell。

  1. 使用點(diǎn)命令

可以使用點(diǎn)命令(.)來運(yùn)行腳本文件,例如:

. script.sh

這種方式與source命令類似,也會將腳本中的命令在當(dāng)前shell環(huán)境中執(zhí)行。

  1. 使用環(huán)境變量

可以將腳本文件的路徑添加到環(huán)境變量中,例如:

export PATH=$PATH:/path/to/script

然后就可以像使用普通命令一樣使用腳本文件了:

script.sh
  1. 使用shebang

在腳本文件的開頭添加shebang(#!)可以指定腳本的解釋器,例如:

#!/bin/bash

echo "Hello, world!"

這種方式可以確保腳本使用指定的解釋器來執(zhí)行,而不受環(huán)境變量的影響。

  1. 使用xargs命令

可以使用xargs命令來運(yùn)行腳本文件,例如:

echo "arg1 arg2" | xargs ./script.sh

這種方式可以將標(biāo)準(zhǔn)輸入中的數(shù)據(jù)作為參數(shù)傳遞給腳本。

  1. 使用expect腳本

可以使用expect腳本來自動化交互式程序的運(yùn)行,例如:

#!/usr/bin/expect

set timeout -1
spawn ./script.sh

expect "Username:"
send "usernamer"

expect "Password:"
send "passwordr"

expect eof
expect eof
expect eof

這種方式可以模擬用戶輸入,實(shí)現(xiàn)腳本的自動化運(yùn)行。

  1. 使用cron定時任務(wù)

可以使用cron定時任務(wù)來定期執(zhí)行腳本,例如:

0 * * * * /path/to/script.sh

這行cron表達(dá)式表示每小時的第0分鐘執(zhí)行腳本。

  1. 使用systemd服務(wù)

可以使用systemd服務(wù)來管理腳本的運(yùn)行,例如創(chuàng)建一個名為script.service的文件:

[Unit]
Description=My Script

[Service]
Type=simple
ExecStart=/path/to/script.sh

[Install]
WantedBy=multi-user.target

然后使用以下命令來啟動、停止和查看服務(wù)狀態(tài):

sudo systemctl start script.service
sudo systemctl stop script.service
sudo systemctl status script.service
  1. 使用screen或tmux

可以使用screentmux工具來在后臺運(yùn)行腳本,例如:

screen -S script_session
./script.sh

然后可以按Ctrl+A D來脫離當(dāng)前會話,之后可以使用screen -r script_session來重新連接。

  1. 使用nohup命令

可以使用nohup命令來在后臺運(yùn)行腳本,即使終端關(guān)閉也不會影響腳本的運(yùn)行:

nohup ./script.sh &
  1. 使用trap命令

可以使用trap命令來捕獲信號并執(zhí)行相應(yīng)的命令,例如:

trap "echo 'Script interrupted'" SIGINT

./script.sh

當(dāng)按下Ctrl+C時,會輸出“Script interrupted”。

  1. 使用subprocess模塊

Python中,可以使用subprocess模塊來運(yùn)行Shell腳本,例如:

import subprocess

subprocess.run(["./script.sh"])
  1. 使用os.system方法

在Python中,還可以使用os.system方法來運(yùn)行Shell腳本,例如:

import os

os.system("./script.sh")
  1. 使用eval函數(shù)

在Shell中,可以使用eval函數(shù)來執(zhí)行字符串形式的命令,例如:

cmd="./script.sh arg1 arg2"
eval $cmd

這種方式需要謹(jǐn)慎使用,因?yàn)榭赡軙艿阶⑷牍舻挠绊憽?/p>

  1. 使用curl或wget

可以使用curlwget命令來從遠(yuǎn)程服務(wù)器下載并執(zhí)行腳本,例如:

curl https://example.com/script.sh | bash

這種方式需要確保下載的腳本是可信的,以避免安全風(fēng)險。

  1. 使用ssh命令

可以使用ssh命令來在遠(yuǎn)程服務(wù)器上執(zhí)行腳本,例如:

ssh user@remote_host ./script.sh

這種方式需要確保遠(yuǎn)程服務(wù)器允許使用密碼或密鑰進(jìn)行登錄。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 程序
    +關(guān)注

    關(guān)注

    116

    文章

    3756

    瀏覽量

    80751
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    387

    瀏覽量

    14811
  • Shell腳本
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    7960
  • 解釋器
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    6488
收藏 人收藏

    評論

    相關(guān)推薦

    shell腳本進(jìn)階】幾個常用的shell進(jìn)階腳本

    shell腳本進(jìn)階】幾個常用的shell進(jìn)階腳本
    的頭像 發(fā)表于 09-19 08:59 ?1820次閱讀
    【<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>進(jìn)階】幾個常用的<b class='flag-5'>shell</b>進(jìn)階<b class='flag-5'>腳本</b>

    Linux中執(zhí)行shell腳本的兩種方式

    一條的執(zhí)行很是不大方便,這種太多命令的才能完成的,一般都是編寫一個shell腳本來進(jìn)行操作,而不用一步一步的進(jìn)行。有些時候在Linux中的很多對應(yīng)的應(yīng)用程序目錄下有很多.sh結(jié)尾的腳本
    發(fā)表于 11-18 16:49 ?1795次閱讀
    Linux中<b class='flag-5'>執(zhí)行</b><b class='flag-5'>shell</b><b class='flag-5'>腳本</b>的兩種<b class='flag-5'>方式</b>

    shell腳本編寫之本地腳本的編寫和執(zhí)行

    ,是在當(dāng)前shell環(huán)境下讀取并執(zhí)行shell腳本,可以不被賦予執(zhí)行權(quán)限。與前幾種執(zhí)行
    發(fā)表于 08-28 09:36

    Android開機(jī)執(zhí)行shell腳本

    Android開機(jī)執(zhí)行shell腳本 往往需要在Android啟動過程中去對系統(tǒng)做一些設(shè)置,如修改某些文件夾的屬主和文件的權(quán)限,可在init.rc中增加service執(zhí)行
    發(fā)表于 04-30 15:24

    shell腳本執(zhí)行方式和變量

    1-22-shell腳本的基礎(chǔ)
    發(fā)表于 09-27 17:05

    shell腳本最簡明的教程

    Shell腳本,就是利用Shell的命令解釋的功能,對一個純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell
    的頭像 發(fā)表于 10-16 11:27 ?4729次閱讀
    <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>最簡明的教程

    如何創(chuàng)建和執(zhí)行一個簡單的Linux shell腳本

     如果您愿意要嘗試更長的shell腳本,請將下面的shell腳本(并附加為PDF和ODT文件)復(fù)制到文本編輯器中,保存,使其可執(zhí)行并運(yùn)行。當(dāng)
    的頭像 發(fā)表于 11-06 17:28 ?1.3w次閱讀

    Linux中shell腳本執(zhí)的4種方式

    Linux中shell腳本執(zhí)行通常有4種方式,分別為工作目錄執(zhí)行,絕對路徑執(zhí)行,sh
    發(fā)表于 05-23 09:28 ?899次閱讀
    Linux中<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>執(zhí)的4種<b class='flag-5'>方式</b>

    109個實(shí)用shell腳本分享

    Shell腳本,就是利用Shell的命令解釋的功能,對一個純文本的文件進(jìn)行解析,然后執(zhí)行這些功能,也可以說Shell
    的頭像 發(fā)表于 03-16 08:58 ?2574次閱讀

    shell腳本基礎(chǔ)知識

    shell腳本是一個文件,里面存放的是特定格式的指令,系統(tǒng)可以使用腳本解析器翻譯或解析指令并執(zhí)行(無需編譯),shell
    的頭像 發(fā)表于 04-17 15:00 ?1048次閱讀

    分享249個拿來即用的shell腳本

    ? 由于腳本案例太多,在此僅展示部分,完整版領(lǐng)取方式請見文末 ? ? ? 249個拿來即用的shell腳本! ? 這249個Shell
    的頭像 發(fā)表于 07-07 10:52 ?1127次閱讀
    分享249個拿來即用的<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>

    為什么shell腳本執(zhí)行命令要加exec?這個exec有什么作用呢?

    正常情況下,如果我們想要在shell腳本執(zhí)行一個命令,我們只用將該命令原樣寫到這個shell腳本中就好了。
    的頭像 發(fā)表于 08-21 09:10 ?2795次閱讀
    為什么<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>中<b class='flag-5'>執(zhí)行</b>命令要加exec?這個exec有什么作用呢?

    shell腳本串行和并行執(zhí)行設(shè)置

    Shell腳本中,你可以使用不同的技巧來實(shí)現(xiàn)串行和并行執(zhí)行。 串行執(zhí)行 要實(shí)現(xiàn)串行執(zhí)行,你可以簡單地按順序編寫
    的頭像 發(fā)表于 11-08 10:25 ?2315次閱讀

    shell并行執(zhí)行java腳本

    Shell是一種用于解釋執(zhí)行命令的腳本語言,而Java是一種跨平臺的面向?qū)ο缶幊陶Z言。在某些情況下,我們可能需要在Shell腳本
    的頭像 發(fā)表于 11-08 10:29 ?652次閱讀

    shell腳本執(zhí)行的三種方式及區(qū)別

    在Linux系統(tǒng)中,Shell腳本是一種非常實(shí)用的工具,用于自動化執(zhí)行一系列命令。Shell腳本可以大大提高工作效率,簡化復(fù)雜的任務(wù)。在這篇
    的頭像 發(fā)表于 08-30 15:24 ?634次閱讀