那会导致语法错误呢? (在&&附近)

时间:2019-07-10 16:14:17

标签: bash git-bash

用别名“ &&”串在一起的一组命令在别名时不起作用,而在直接输入时起作用。

我有11条命令集,用于初始化Git,创建新的存储库,创建一些配置文件以及创建多个分支。

为方便起见,我将它们组合为&& s字符串的单个命令。直接粘贴时此命令有效。运行别名版本时失败。

我已将我的~/.bashrc文件编辑为以下代码:


alias repo='git init && hub create && echo "/node_modules" >.gitignore && tsc --init && git add -A && git commit -S -m "First commit" && git push -u origin master && git checkout -b dev && git push origin head && git checkout -b new_feature && git push origin head'

我尝试将其移至其自身功能:

createRepo () {
  git init 
  && hub create 
  && echo "/node_modules" >.gitignore 
  && tsc --init 
  && git add -A 
  && git commit -S -m "First commit"  
  && git push -u origin master  
  && git checkout -b dev 
  && git push origin head 
  && git checkout -b new_feature 
  && git push origin head
}

alias repo="createRepo"

它给出完全相同的结果。

要清楚,粘贴git init && hub create && echo "/node_modules" >.gitignore && tsc --init && git add -A && git commit -S -m "First commit" && git push -u origin master && git checkout -b dev && git push origin head && git checkout -b new_feature && git push origin head会直接使其正常工作。

只有当我尝试对其进行别名时,才会出现语法错误。

我正在使用nano

我希望repo被Bash破坏:

  1. 初始化git仓库
  2. 创建GitHub存储库
  3. 添加,提交和推送master分支
  4. 创建,签出并推送dev和新功能分支

实际:bash: syntax error near &&

2 个答案:

答案 0 :(得分:3)

bash不知道命令会继续到下一行,除非:

  • 您使用换行符

    createRepo () {
      git init \
      && hub create \
      && echo "/node_modules" >.gitignore \
      && ...
    
  • 您将&&放在行尾

    createRepo () {
      git init &&
      hub create &&
      echo "/node_modules" >.gitignore &&
      ...
    

答案 1 :(得分:0)

Bash从一开始就加载~/.bashrc文件,因此我不得不完全重新启动Bash。

此后,我的repo别名起作用了。