我在 .sh 中编写了一个 bash 脚本,该脚本以类名作为其参数。运行此脚本时,它会class
在与脚本相同的空间中创建一个目录。
然后,它创建一个 PHP 文件,该文件的类名与从目录内的参数接收到的类名相同class
。但如果已经存在相同的文件,请退出程序。
问题:它可以在 Microsoft 的 Windows 上运行,但我也需要在 Gnu/Linux 上运行
这是我的.sh
#!/bin/bash
CURRENT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
mkdir -p $CURRENT_PATH/class
cd $CURRENT_PATH/class
if [ -f "[email protected]" ];
then
exit 1
else
echo "class $@
{
}" > [email protected]
fi
答案1
我看到的唯一问题是缺少引号,因此如果目录/文件名中有空格,就会出错。
#!/bin/bash
current_path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
mkdir -p "$current_path/class"
cd "$current_path/class"
if [ -f "$1.php" ];
then
exit 1
else
echo "class $1
{
}" > "$1.php"
fi
还有一个使用的问题"$@"
,是不是你想要的。你的意思"$*"
?
并且变量名应该小写。我不明白这会如何导致问题,但这是一个等待发生的错误。
运行shellcheck
会发现大部分错误。