wik*_*sky 2 linux shell-script split
如何从格式的行文件中连接文本:
line1
line2
...
Run Code Online (Sandbox Code Playgroud)
得到这样的结果
-o line1:1 -o line2:1 ...
Run Code Online (Sandbox Code Playgroud)
我找到了如何连接这样的分隔符的解决方案:
ds=`cat list.txt`
${ds//$'\n'/','}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何为每个条目添加前缀。
这取决于您想对您创建的字符串做什么。它看起来像一组命令行选项,因此我假设您希望将它与一些名为util.
这是一个解决方案/bin/sh:
#!/bin/sh
listfile=$1
set --
while IFS= read -r line; do
set -- "$@" -o "$line:1"
done <$listfile
util "$@"
Run Code Online (Sandbox Code Playgroud)
这从脚本的命令行给出的文件中读取,并用于从该文件中读出每一行,它设置的位置参数,以包括-o和LINE:1其中LINE是线从文件中读取。
读取所有行后,它util使用构造的命令行参数列表进行调用。通过使用"$@"(使用双引号),我们确保构造的参数列表中的每个单独项目都被单独引用。
使用bash并使用bash数组来保存我们创建的命令行参数:
#!/bin/bash
listfile=$1
while IFS= read -r line; do
args+=( -o "$line:1" )
done <$listfile
util "${args[@]}"
Run Code Online (Sandbox Code Playgroud)
在上面的两个例子中,引用很重要。同样的是,我们创建了一个事实的单独项目阵列(每个-o和每一个LINE:1在列表中的项目)。另一种方法是创建单个字符串 -o LINE1:1 -o LINE2:1 etc.,但是如果用作 as 将被解释为单个参数,util "$string"并且如果用作 as将进行分词和文件名通配util $string(如果在输入文件包含空格、制表符或文件名通配符)。
上面的两个脚本都将用作
$ ./script.sh file
Run Code Online (Sandbox Code Playgroud)
哪里script.sh是可执行脚本文件,file是要读取的输入文件名。
有关的:
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |