bash的here strings (<<<)的问题

oscarjiao 2014-05-21 01:35:09
再看其他人写的一个bash script,里面有一个statement是这样的:

id=$( /bin/cut -d " " -f $FLOW_INDEX <<< "$FLOWID_LIST" )


大概知道是FLOWID_LIST是一个string,赋值给FLOWINDEX,按空格分隔,然后取第一个赋给id。可是当我把cut命令拿出来单独执行的时候有问题。

cut -d " " -f $index <<< "3 4 5"

报错说

cut: option requires an argument -- 'f'


这是怎么回事?

而且我不太理解为什么一定要用<<<,不能直接cut -d " " -f "3 4 5"
...全文
295 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
iasky 2014-05-21
  • 打赏
  • 举报
回复
$index的变量是不是没有定义,这个-f是说取第几个
panghuhu250 2014-05-21
  • 打赏
  • 举报
回复
1. -f $FLOW_INDEX -f选项是指取第几个部分,后面必须跟一个参数。在这个例子里$FLOW_INDEX是该参数的值。 2. Here string是说把here string的值作为整个cut命令的输入,而不是赋给$FLOW_INDEX。 3. 你的例子里$index没有值,bash当它是空字符串,所以你的例子就变成了:

cut -d " " -f <<< "3 4 5"
-f后没有值,所以报错:“cut: option requires an argument -- f”

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧