首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这段bash脚本代码行是什么意思

这段bash脚本代码行是什么意思
EN

Stack Overflow用户
提问于 2017-11-16 18:24:34
回答 5查看 169关注 0票数 0

我是shell脚本的新手,我在一个给定的脚本中发现了以下几行代码。

有没有人能举例说明一下下面这行代码是什么意思?

代码语言:javascript
运行
复制
Path=`echo $line | awk -F '|' '{print $1}'`
EN

回答 5

Stack Overflow用户

发布于 2017-11-16 18:49:49

echo $line将打印变量$line的值,|符号表示该变量的输出将被传递(或piped到另一个程序/命令/脚本。我不打算在这里解释awk,但上面所做的是获取echo $line的输出并使用它进行处理。

根据awk手册页,选项-FS意味着

-F fs使用fs作为输入字段分隔符

因此,它后面的字符串将用于将给awk的输入字符串拆分为不同的字段。例如,变量$line的值为a|b,它将被分成两个字段ab。如何处理它是在'{}'表达式中指定的。同样,在这里可以做的是无限的,这里唯一要做的就是打印第一个可以用$1访问的字段,或者上面例子中的a (可以猜到$2是b )。

最后,整个操作的输出存储在变量Path中。

总结一下:

代码语言:javascript
运行
复制
line="a|b"
echo $line | awk -F '|' '{print $1}'
> a
Path=`echo $line | awk -F '|' '{print $1}'`
echo $Path
> a
票数 0
EN

Stack Overflow用户

发布于 2017-11-16 18:52:02

代码语言:javascript
运行
复制
echo $line | awk -F '|' '{print $1}'

解释:

代码语言:javascript
运行
复制
echo -> display a line of text
$line -> parameter expansion read the line
| -> A  pipeline is a sequence of one or more commands separated by one of the control operators |
awk -> Invoke awk program
-F '|' -> Field separator as | for the data feed
'{print $1}' -> Print the first field

示例

代码语言:javascript
运行
复制
echo 'a|b|c' | awk -F '|' '{print $1}'

将打印a

票数 0
EN

Stack Overflow用户

发布于 2017-11-16 19:24:44

我认为这只是一种复杂的表达方式

代码语言:javascript
运行
复制
 echo ${line%%|*}

例如,将变量line的内容的一部分写入标准输出,该部分内容直到(但不包括)第一个竖线。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47327159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档