命令执行时没有这样的文件或目录
No such file or directory on command execution
我想用 bash 克隆一个 git 存储库。除此之外,我需要执行几个不同的命令,并且应该使用相同的代码部分检查它们。所以我写了这个方法:
exec_func() {
print_msg ""
if [ "$(bash "" >> log.txt 2>&1;echo $?)" -eq "0" ]; then
# Task success
else
# Task fails
fi
printf "\n\n" >> log.txt
}
调用这个函数需要两个参数。第一个参数只是一个字符串,解释执行了哪个命令,它将通过函数 print_msg 输出一些颜色。第二个参数是命令。我可以使用此函数执行另一个 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 "" >> log.txt 2>&1;echo $?)"
错误,shell 正在尝试执行名为
的命令
'git clone https://:@gitlab.com//.git'
(一次所有行)
要么直接执行命令而不使用其他子程序shell(使用 $(...) 已经执行)
"$( >> log.txt 2>&1;echo $?)"
要么使用bash的-c选项传递命令:
"$(bash -c "" >> log.txt 2>&1;echo $?)"
我想用 bash 克隆一个 git 存储库。除此之外,我需要执行几个不同的命令,并且应该使用相同的代码部分检查它们。所以我写了这个方法:
exec_func() {
print_msg ""
if [ "$(bash "" >> log.txt 2>&1;echo $?)" -eq "0" ]; then
# Task success
else
# Task fails
fi
printf "\n\n" >> log.txt
}
调用这个函数需要两个参数。第一个参数只是一个字符串,解释执行了哪个命令,它将通过函数 print_msg 输出一些颜色。第二个参数是命令。我可以使用此函数执行另一个 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 "" >> log.txt 2>&1;echo $?)"
错误,shell 正在尝试执行名为
'git clone https://:@gitlab.com//.git'
(一次所有行)
要么直接执行命令而不使用其他子程序shell(使用 $(...) 已经执行)
"$( >> log.txt 2>&1;echo $?)"
要么使用bash的-c选项传递命令:
"$(bash -c "" >> log.txt 2>&1;echo $?)"