簡體   English   中英

命令執行時沒有這樣的文件或目錄

[英]No such file or directory on command execution

我想用 bash 克隆一個 git 存儲庫。 除此之外,我需要執行幾個不同的命令,並且它們都應該使用相同的代碼部分進行檢查。 所以我寫了這個方法:

exec_func() {
    print_msg "$1"
    if [ "$(bash "$2" >> log.txt 2>&1;echo $?)" -eq "0" ]; then
            # Task success
    else
            # Task fails
    fi
    printf "\n\n" >> log.txt
}

調用這個 function 需要兩個 arguments。 第一個參數只是解釋執行哪個命令的字符串,它將只是 output 和一些 colors 通過 function print_msg。 第二個參數是命令。 我可以使用此 function 執行另一個 bash 腳本,但使用以下命令會失敗:

exec_func "Update using gitlab" \
      "git clone https://${git_username}:${git_password}@gitlab.com/*****/${GIT_PROJECT_NAME}.git"

所有需要的變量都已正確設置(git_username、git_password、GIT_PROJECT_NAME),如果我將它復制到終端並運行它,該命令將起作用。 此外, git 在路徑中 - 確切地說: git 位於/usr/bin/git/usr/bin位於$PATH

為什么我會收到此錯誤?

bash: git clone https://*****:*****@gitlab.com/*****/*****.git: No such file or directory

"$(bash "$2" >> log.txt 2>&1;echo $?)"錯誤,shell 正在嘗試執行一個名為

'git 克隆 https:// : @gitlab.com/ / .git'

(一次所有線路)

或者您直接執行命令而不使用其他子shell(使用 $(...) 已經這樣做了)

"$($2 >> log.txt 2>&1;echo $?)"

要么使用 bash 的 -c 選項來傳遞命令:

"$(bash -c "$2" >> log.txt 2>&1;echo $?)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM