所以我今天开始看看使用vim进行脚本编写,我很失落,并且正在寻找一些帮助。
对于我的第一个项目,我想将文件作为命令行参数处理,如果用户执行此脚本时未包含文件,则应显示用法消息,然后退出程序。 / p>
我不知道从哪里开始,我需要和if ... then
声明,还是什么?
答案 0 :(得分:3)
稍后保存vim
并尝试一次学习一件事。更简单的文本编辑器称为nano
。
现在,至于检查文件作为参数,否则显示用法消息,这是一种典型的模式:
PROGNAME="$0"
function show_usage()
{
echo "Usage: ${PROGNAME} <filename>" >&2
echo "..." >&2
exit 1
}
if [[ $# -lt 1 ]]; then
show_usage
fi
echo "Contents of ${1}:"
cat "$1"
让我们打破这一点。
PROGNAME="$0"
$0
是脚本的名称,因为它是在命令行上调用的。
function show_usage()
{
echo "Usage: ${PROGNAME} <filename>" >&2
echo "..." >&2
exit 1
}
这是打印&#34;用法&#34;的功能。消息并退出并显示失败状态代码。 0
是成功的,0
以外的任何内容都是失败的。请注意,我们将echo
重定向到&2
- 这会在标准错误上打印使用消息,而不是标准输出。
if [[ $# -lt 1 ]]; then
show_usage
fi
$#
是传递给脚本的参数数量。如果该数字小于1,则打印使用信息并退出。
echo "Contents of ${1}:"
cat "$1"
$1
是文件名 - 脚本的第一个参数。我们可以在这里进行任何我们想要的处理,$1
是文件名。希望这有帮助!
答案 1 :(得分:1)
我认为您正在询问如何编写需要将文件作为命令行参数的bash脚本,如果出现问题则退出使用消息:
#!/bin/bash
# check if user provided exactly one command-line argument:
if [ $# -ne 1 ]; then
echo "Usage: `basename "$0"` file"
exit 1
# now check if the provided argument corresponds to a real file
elif [ ! -f "$1" ]; then
echo "Error: couldn't find $1."
exit 1
fi
# do things with the file...
stat "$1"
head "$1"
tail "$1"
grep 'xyz' "$1"