类似于makefile的Bash脚本
我想制作一个像makefile一样工作的bash脚本。 它将有诸如-archive、-clean、-backup等选项。 唯一的要求是它必须具有-o参数,以便指定名称。 我现在的问题是,我不知道如何从参数中取出.c文件 例如,如果我输入 ./compile.sh-o name-backup hello_world.c print.c 我该如何编译这个 这是我到目前为止的代码类似于makefile的Bash脚本,bash,Bash,我想制作一个像makefile一样工作的bash脚本。 它将有诸如-archive、-clean、-backup等选项。 唯一的要求是它必须具有-o参数,以便指定名称。 我现在的问题是,我不知道如何从参数中取出.c文件 例如,如果我输入 ./compile.sh-o name-backup hello_world.c print.c 我该如何编译这个 这是我到目前为止的代码 #!/usr/local/bin/bash if [ $1 != '-o' ]; then echo "ERROR -o
#!/usr/local/bin/bash
if [ $1 != '-o' ]; then
echo "ERROR -o wasn't present as first argument"
echo "HELP"
echo "BASH syntax: $ compile –o filename –clean –backup –archive -help cfilenames"
echo "WHERE:"
echo "$ Unix Prompt"
echo "comiple Name of bash program"
echo "-o filename Mandatory Argument"
echo "-clean Optional and when present deletes all .o files"
echo "-backup Optional and copies all .c and .h files into backup directory"
echo "-archive Optional and Tars content of source directory. Then moved to backup directory"
echo "-help Provides list of commands"
echo "cfilenames Name of files to be compiled together"
fi
NAME=$2
shift
shift
options=$@
arguments=($options)
index=0
for argument in $options
do
index=`expr $index + 1`
case $argument in
-clean) echo "clean" ;;
-backup) echo "backup"
mv -f *.c ~/backup
mv -f *.c ~/backup ;;
-archive) echo "archive"
tar -zcvf backup.tar.gz *
mv -f backup.tar.gz ~/backup/backup.tar.gz
;;
-help) echo "help"
echo "HELP"
echo "BASH syntax: $ compile –o filename –clean –backup –archive -help cfilenames"
echo "WHERE:"
echo "$ Unix Prompt"
echo "comiple Name of bash program"
echo "-o filename Mandatory Argument"
echo "-clean Optional and when present deletes all .o files"
echo "-backup Optional and copies all .c and .h files into backup directory"
echo "-archive Optional and Tars content of source directory. Then moved to backup directory"
echo "-help Provides list of commands"
echo "cfilenames Name of files to be compiled together"
;;
esac
done
exit;
感谢您似乎正在寻找的bash内置解析选项。您可以按如下方式使用它:
#!/bin/bash
while getopts "abc:" flag do
echo "$flag" $OPTIND $OPTARG
done
阅读更多:
如果您想使用长选项,可以使用一个单独的程序,您可以从bash调用该程序。它是
linux util
的一部分,这是大多数发行版默认安装的一部分,或者至少是基本软件包的一部分。您似乎在寻找一个用于解析选项的bash内置程序。您可以按如下方式使用它:
#!/bin/bash
while getopts "abc:" flag do
echo "$flag" $OPTIND $OPTARG
done
阅读更多:
如果您想使用长选项,可以使用一个单独的程序,您可以从bash调用该程序。它是
linux util
的一部分,这是大多数发行版默认安装的一部分,或者至少是基本软件包的一部分。我最初使用的是getopts,但我了解到不能使用长参数。因为它是一个单独的程序,这是否意味着它不是通用的?例如,我无法将其传输到另一台计算机。我最初使用的是getopts,但我了解到不能对其使用长参数。因为它是一个单独的程序,这是否意味着它不是通用的?例如,我无法将它转移到另一台机器。我想尝试新的东西。我想尝试新的东西。