bash:[:参数太多?

bash:[:参数太多?

我正在尝试创建一个目录并cd进入它:

在 ~/.bashrc 中:

function abc() {
  appname=$1
  appdir="$HOME/code/$appname"
  if [ mkdir $appdir -a cd $appdir ]; then
    echo Success
  else
    echo Failed to create and switch directory
  fi
}

当我重新加载 bashrc( . ~/.bashrc) 时出现错误:

bash: [: too many arguments
Failed to create and switch directory

我该如何修复这个问题?[:错误中的内容是什么意思?

诗篇有人可以给我提供一份“非神秘的” bash 脚本教程吗?

答案1

脚本中的主要错误是,[命令(相当于test命令)用于测试条件,例如字符串比较、文件是否存在等等。

要测试进程的退出状态,您必须使用ifwithout [,这样您的脚本就可以

if mkdir "$appdir" && cd "$appdir"; then
  echo "Success"
else
  echo "Failed to create and switch directory"
fi

这在Bash 陷阱:9. if [grep foo myfile

我建议你去GrayCat Bash 指南了解 bash。

答案2

原型可以是:

  • 在桌面上创建一个文件:touch newDirectory.sh
  • 使文件可执行: chmod +x newDirectory.sh
  • 要从桌面终端调用脚本: ./newDirectory.sh anyName

/

#!/bin/bash
function abc() {
  appname=${1}
  appdir="$HOME/Desktop/$appname"
  if (( mkdir "${appdir}" )) ; then     
    cd "${appdir}"  
    echo "Success" 
  else   
    echo "Failed to create and switch directory" 
  fi
}
abc ${1}

小建议:如果你是新手,就不要乱用.bashrc:)

相关内容