![bash:[:参数太多?](https://linux22.com/image/957691/bash%EF%BC%9A%5B%EF%BC%9A%E5%8F%82%E6%95%B0%E5%A4%AA%E5%A4%9A%EF%BC%9F.png)
我正在尝试创建一个目录并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
命令)用于测试条件,例如字符串比较、文件是否存在等等。
要测试进程的退出状态,您必须使用if
without [
,这样您的脚本就可以
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
:)