首页 > 解决方案 > 接受 2 个参数的 Shell 脚本

问题描述

我创建了一个名为的 shell 脚本am.sh,用于创建文本并将其放入文件中。我现在想创建另一个脚本,它将接受am.sh创建的文本文件,比如说words.txt和一个数字,所以使用命令:

./bm.sh words.txt 5

将输出words.txt文件中包含的前 5 个单词。

我很困惑,因为到目前为止我所做的所有脚本都只使用一个参数。到目前为止,我想出的是:

#!/bin/sh
grep '[A-Za-z]' | while read
do
echo " $a "
done

但我需要一种方法来接受用户想要的字数,然后我需要创建一个从文本文件输出的循环。

标签: linuxbashshellubuntu

解决方案


所以这对我有用:

#!/bin/sh

file=$1
word_count=$2
fields=$(echo $(seq 1 $word_count) | sed 's/\s/,/g')

head -n 1 $file | cut -d ' ' -f$fields

位置参数 one ( $1) 必须是您的第一个脚本创建的文件的文件名。第二个($2)是应该打印的字数。

我假设单词由一个空格分隔。


推荐阅读