linux - 接受 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
但我需要一种方法来接受用户想要的字数,然后我需要创建一个从文本文件输出的循环。
解决方案
所以这对我有用:
#!/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
)是应该打印的字数。
我假设单词由一个空格分隔。
推荐阅读
- python - sqlite3.OperationalError:接近“ON”:语法错误
- node.js - 如何使用带有 lambda 函数的 nodejs 在 aws s3 存储桶中创建嵌套文件夹?
- google-cloud-sql - 重命名表后更新记录失败
- angular - 使用路由构建自包含的 Angular 7 库并安装以在 Angular 2.4.8 应用程序中使用
- jenkins - 如何通过 jenkins 配置文件为 openshift 提供环境变量?
- php - sqlsrv_query() 期望参数 1 是资源
- c++ - 正确调用参数化 std::function
- spring-boot - RestTemplate.getForObject 处理未找到异常 404
- canvas - Love2d 画布,模糊的角色精灵
- c++ - 在 C++ 中创建 100 个线程