如何将cut命令的输出结果赋值给Bash变量?
解决bash变量赋值与管道结合的错误
你的错误源于bash对命令的解析逻辑:当你执行myVar=echo "After-u-math-how-however" | cut -f1,2 -d'-'时,bash会把myVar=echo视为给后续命令临时设置环境变量,随后把"After-u-math-how-however"当成独立的可执行命令来运行——这显然不存在,所以报错。
要将命令输出赋值给变量,必须使用命令替换,把整个管道命令包裹在$()(推荐,可读性强且支持嵌套)或反引号`中,正确写法如下:
方法一(推荐)
myVar=$(echo "After-u-math-how-however" | cut -f1,2 -d'-')
方法二(旧写法)
myVar=`echo "After-u-math-how-however" | cut -f1,2 -d'-'`
执行完赋值后,可通过echo $myVar验证,会输出预期的After-u。
另外,也可以用Here字符串简化命令,省去echo:
myVar=$(cut -f1,2 -d'-' <<< "After-u-math-how-however")
内容的提问来源于stack exchange,提问作者Rezzy
相关产品推荐
相关产品推荐

