到目前为止,这是我的代码:
#! /bin/bash
Options=("1" "2" "3")
select opt in "${Options[@]}"
do
case "$REPLY" in
1)
who=$(whoami)
echo -e "you are: $who"
;;
2)
var=$(uptime | awk '{print $3}' | cut -d, -f 1)
echo $var
;;
3) break;;
*) echo "Invalid input";;
esac
done
它不起作用。第一个选项工作得很好。然而,第二个没有。
进一步测试表明bash不喜欢管道,输出只是“#”,这表明它只是命令的awk部分实际执行。该命令在shell中运行良好(它报告它仅在线时间)。
答案 0 :(得分:2)
这一行没有任何意义:
var=$(uptime | awk '{print 3}' | -d, -f 1)
awk
语句应为
awk '{print $3}'
并且cut
语句应为
cut -d ',' -f 1
说实话,您可能根本不需要awk
语句来表达您想要做的事情。只需将uptime
传送到上面的cut
语句。
var=$(uptime | cut -d ',' -f 1)
答案 1 :(得分:0)
当您使用Windows / Dos中的文本文件并在unix中重复使用时,会发生这种情况。
每个相应OS中的线路终结器是不同的。 HTH
P.S。当您在vi / vim中打开文本文件时,您会注意到行尾的^ M.
不起作用说“cut:invalid byte or field list” - user2230627 Apr 1 at 3:34