Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash \create.sh:找不到第52行:X:命令_Bash_Shell - Fatal编程技术网

Bash \create.sh:找不到第52行:X:命令

Bash \create.sh:找不到第52行:X:命令,bash,shell,Bash,Shell,我有这个shell脚本,但我不知道为什么在向它传递参数后它不工作 给你 !/bin/bash 检查参数类型并根据其更改目录。 用代码打开 创造{ directory=E:/husseinabbas/programming/Code 使用目录= 项目名称=$1 项目类型=$2 项目模式=$3 | |新 存储库_name=$4 | |$project_name 存储库类型=$5 | |错误 如果[[$project_type==html]] 然后 使用${directory}/html\u css/

我有这个shell脚本,但我不知道为什么在向它传递参数后它不工作

给你

!/bin/bash 检查参数类型并根据其更改目录。 用代码打开 创造{ directory=E:/husseinabbas/programming/Code 使用目录= 项目名称=$1 项目类型=$2 项目模式=$3 | |新 存储库_name=$4 | |$project_name 存储库类型=$5 | |错误 如果[[$project_type==html]] 然后 使用${directory}/html\u css/$project\u name elif[$project_type==node]] 然后 使用\目录={$directory}/node projects/$project\名称 elif[[$project_type==php]] 然后 使用\u directory=F:/XAMPP/htdocs/$project\u名称 elif[$project_type==python]] 然后 使用\u目录={$directory}/python项目/$project\u名称 elif[$project_type==flatter]] 然后 使用_目录={$directory}/android/$project_名称 elif[$project_type==test]] 然后 使用\u directory=C:/Users/H.Abbas/Desktop/$project\u name 其他的 回来 fi 激活venv cd E:/husseinabbas/programming/Code/python projects/day\u automator 源venv/脚本/激活 python day\u automator.py$project\u name$project\u type$project\u mode$repository\u name$repository\u type cd$use|U目录|返回 echo$project\u name>>README.md 初始化 git add README.md git提交-m init 吉特分行-M主 git远程添加源https://github.com/husseinYY/$repository\u name.git git推送-u源主 密码 } $@ 我用这个命令来运行它

sh .\create.sh my_day python all my_day false

它给了我这个:-

.\create.sh: line 52: my_day: command not found

我已经阅读了这个问题的其他答案,但它们没有帮助


这一段之所以在这里,是因为Stackoverflow robot需要更多的细节,呵呵

在您的脚本中,您没有调用函数create,所以什么也没做

您还在末尾扩展$@:这将打印您传递的shell参数 试图执行它们。 错误消息来自第52行,该行正好是$@所在的位置

在您的命令中:

sh./create.sh my_day python all my_day false $0是脚本的路径。/create.sh 1美元是我的生日 2美元是python ... $@从$1扩展到最后一个参数,这就是为什么您在my_day收到的错误实际上是$1

将create前置到$@并应为ok


还请选中

您通常在与./and not相同的目录中运行脚本。\n此外,最好将参数括在引号中。project_mode=$3 | | new不是在shell中提供默认值的方式;使用project_mode=${3:-new}代替请参见。可能将$@替换为create$@并且应该可以吗?是的,也可以。如果您只编写create,它将从主脚本获取参数,这样它就可以工作。但我喜欢你的解决方案more@piertoni仅使用create不会将参数传递给主脚本,它将运行create函数而不带参数。好的,谢谢,我编辑了答案