Shell-Script
“找不到命令”將參數從 Makefile 傳遞到 shell 腳本
我有一個
info.properties
文件,我有這個MY_NAME
屬性,我可以在我的Makefile
. 我已經嘗試過,但我不能直接在myScript.sh
文件中使用該屬性。所以我試圖將該屬性作為參數傳遞給
myScript.sh
. 我正在這樣做:在 Makefile 上:
my_stage: chmod 777 myScript.sh && ./myScript.sh $(MY_NAME)
在 myScript.sh 我有這個:
#!/bin/bash -e source .build/utils.sh MY_NAME=$1 echo "MY_NAME=${MY_NAME}"
但我總是收到這個錯誤:
chmod 777 myScript.sh && ./myScript.sh My-name-Mariana .build/utils.bash: line 596: My-name-Mariana: command not found make: *** [test] Error 127
我該如何解決這個問題?
更新:
我知道
.build/utils.bash
正在嘗試執行我的參數,我可以在錯誤中看到這一點。但我無法更改該文件,因為我沒有它,因為它不是我的程式碼項目的一部分。
由於您的腳本可以 source
.build/utils.bash
,因此您已經證明您實際上可以閱讀它。例如,嘗試less .build/utils.bash
在包含 Makefile 的目錄中。要在不修改的情況下解決實際問題
.build/utils.bash
,您可以嘗試將 的內容分配$1
到您的MY_NAME
變數中,然後使用shift
命令將其從$1
- before you中刪除source .build/utils.sh
。但是隨後作為空字元串
utils.bash
接收$1
,這可能會導致它失敗或做一些不同的事情——如果不閱讀utils.bash
或一些關於它的文件,就不可能知道它期望什麼。
.build/utils.bash
在您嘗試My-name-Mariana
作為命令呼叫的腳本的第 596 行(左右) 。作為文字或作為$1
. 它不存在,因此執行立即失敗(由於-e
標誌 onbash
)。.build/utils.bash: line 596: My-name-Mariana: command not found
解決方案是修復程式碼。您沒有在此處提供它,因此我們無法提供具體建議,但我相信如果您使用相關上下文更新您的問題,有人會很樂意這樣做。