如何使用 bash 脚本创建一个包含一些文本的文件

如何使用 bash 脚本创建一个包含一些文本的文件

我在 .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会发现大部分错误。

相关内容