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

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

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

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

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

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

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

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

./script.sh

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

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

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

bash script.sh

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

  1. 使用source命令

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

source script.sh

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

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

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

. script.sh

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

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

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

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

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

script.sh
  1. 使用shebang

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

#!/bin/bash

echo "Hello, world!"

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

  1. 使用xargs命令

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

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

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

  1. 使用expect腳本

可以使用expect腳本來(lái)自動(dòng)化交互式程序的運(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)腳本的自動(dòng)化運(yùn)行。

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

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

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

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

  1. 使用systemd服務(wù)

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

[Unit]
Description=My Script

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

[Install]
WantedBy=multi-user.target

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

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

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

screen -S script_session
./script.sh

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

  1. 使用nohup命令

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

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

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

trap "echo 'Script interrupted'" SIGINT

./script.sh

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

  1. 使用subprocess模塊

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

import subprocess

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

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

import os

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

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

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

這種方式需要謹(jǐn)慎使用,因?yàn)榭赡軙?huì)受到注入攻擊的影響。

  1. 使用curl或wget

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

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

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

  1. 使用ssh命令

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

ssh user@remote_host ./script.sh

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

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

    關(guān)注

    117

    文章

    3815

    瀏覽量

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

    關(guān)注

    1

    文章

    395

    瀏覽量

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

    關(guān)注

    0

    文章

    36

    瀏覽量

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

    關(guān)注

    0

    文章

    103

    瀏覽量

    6639
收藏 0人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

    Android開(kāi)機(jī)執(zhí)行shell腳本 往往需要在Android啟動(dòng)過(guò)程中去對(duì)系統(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腳本最簡(jiǎn)明的教程

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

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

     如果您愿意要嘗試更長(zhǎng)的shell腳本,請(qǐng)將下面的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í)行,絕對(duì)路徑執(zhí)行,sh
    發(fā)表于 05-23 09:28 ?964次閱讀
    Linux中<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>執(zhí)的4種<b class='flag-5'>方式</b>

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

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

    shell腳本基礎(chǔ)知識(shí)

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

    分享249個(gè)拿來(lái)即用的shell腳本

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

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

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

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

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

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

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

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

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

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品