![如何使用 bash 脚本创建一个包含一些文本的文件](https://linux22.com/image/152892/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20bash%20%E8%84%9A%E6%9C%AC%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%8C%85%E5%90%AB%E4%B8%80%E4%BA%9B%E6%96%87%E6%9C%AC%E7%9A%84%E6%96%87%E4%BB%B6.png)
我在 .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
会发现大部分错误。