當前位置:首頁 » 網頁前端 » 為什麼shell腳本無法運行
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

為什麼shell腳本無法運行

發布時間: 2022-11-29 14:11:42

A. shell腳本運行不了

在本腳本內,你的執行是成功的,echo也可以正常輸出,但是腳本退出以後,export就失效了,可以查一下相關文檔,./***.sh會啟動一個子進程,腳本退出後,子進程的內容是不能影響父進程的,你可以使用source **.sh來完成這個功能,不過頭部要改一下
#! /bin/bash

B. crontab中啟動的shell腳本不能正常運行,但是使用手動執行沒有問題

1、這種情況多數為環境變數載入問題
2、例如你用ls命令,其實依賴PATH環境變數
3、可以改為全路徑,比如/bin/ls
4、或者將環境變數載入到腳本
#!/bin/sh
. ~/.bash_profile
ls -lrt $*

C. 手機shell腳本加密後不能運行

看一下腳本內容是否正確,運行的方式是否正確。
可以採取兩種方式進行運行:
一、 $ sh test 一般不採用這種調用方式,尤其不採用「sh訪問許可權。
二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。 chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權) chmod +rx test(同上) chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權) 按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。
1、test(如果命令檢索路徑包含當前目錄)
2、./test(如果命令減縮路徑不包含當前目錄) *說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。

D. shell腳本ansible執行不成功

無法獲取環境變數。
由於使用ansible腳本批量化部署環境,網路環境走的代理,但是有些模塊總是無法執行成功,最後經過排查是因為ansible遠程連接通過ssh,無法獲取環境變數,我的環境變數是在/etc/profile文件里。可以通過shell命令先導入環境變數。

E. Windows下Shell腳本運行錯誤展示錯誤信息並停止向下執行

shell腳本運行完畢之後會直接關閉窗口,不便於開發者查看運行結果,這點可以通過 sleep 來實現暫停

新建腳本 demoshell

在命令窗口執行 demoshell.sh xxxxx ,會啟動 shell 窗口 ,列印 params1= xxxxx 之後就會關閉窗口

想要不關閉窗口可以在腳本的最後添加 sleep 來實現。
例如

再次執行 demoshell.sh xxxxx ,執行完畢之後,窗口不會直接關閉,可以查看運行結果

shell腳本還有一個不好的地方就是中間的一個命令運行失敗之後還會繼續向下執行,這是一個很危險的行為,並且向下執行的時候會沖掉失敗信息,無法根據錯誤提示來修改腳本。

接下來執行一個不存在的任務,讓shell腳本運行失敗

執行失敗之後由於 sleep 100 ,可以看到錯誤提示,如果沒有 sleep 100 存在,執行失敗之後也是立馬關閉了窗口,看不到錯誤信息;而命令執行成功之後需要關閉窗口的,那能不能想辦法做到兩者兼顧呢?
答案是肯定的,原理就是判斷命令執行狀態,只有在命令執行失敗的時候,觸發sleep行為,阻塞命令向下運行

去掉 sleep 100 ,運行腳本,捕獲到失敗信息,顯示錯誤信息,並停止向下執行

注釋掉 ./gradlew :app:emptyTask -x lint ;
再次運行腳本,運行成功,直接就關閉了窗口

F. Ubuntu下寫了一個shell腳本文件保存在music下,為啥不能執行

你還要去好好去玩一下Linux(不要用圖形系統),你問的這些問題,真不好解釋
1,chmod +x test.sh:將test.sh變成可執行許可權。
2,test.sh 第一行有"#!/bin/sh」 告訴解釋器在什麼位置。
3,第一步test.sh變成可執行了,./test.sh(運行當前目錄下一個可執行文件,這是一個shell腳本,需要解釋器,如果有"#!/bin/sh」通過sh解釋,如果沒有會報錯沒這個命令)。
4,./test.sh(第三步我以解釋什麼意思);運行test.sh(將同過path路徑去找這個命令,顯然這個tesh.sh這個文件不在你path路徑下,你怎麼能運行呢)。
5,sh test.sh(sh在/bin目錄下也就是已經假如path路徑,用sh命令解釋你這個腳本)

G. Ubuntu中shell腳本沒辦法運行是什麼問題

把報錯截圖出來看下,具體時什麼報錯,
沒辦法運行,應該是本身的文件沒有執行許可權,用chmod +x 文件名操作一下。再去運行你的shell腳本

H. shell 腳本為何無法運行

第一,腳本許可權要為可執行 #chmod +x test.sh
第二,腳本所在的目錄在環境變數 PATH 中,或者直接執行 #./test.sh
關於shell腳本這塊的知識,請查閱書籍《Linux就該這么學》

I. php執行shell腳本,為什麼執行不了

直接執行shell腳本沒有許可權問題,因為一般你也是root登陸的。但是使用php執行就會存在。這里你要先確定使用shell腳本操作的文件或者文件夾是否開啟777許可權

J. 命令在控制台中能正常執行但在shell腳本中卻無法執行

沒遇到過,一般我會先檢查下許可權,比如chmod 查看你的許可權。
查看腳本文件是dos格式還是unix格式
你是在用虛擬機嗎?你的文件安裝目錄,檢查 /etc/fstab 文件分區文件
另外《Linux就該這么學》中有個Linux命令大全可以查詢命令