我正在尝试将我的shell脚本的输出存储在变量中。
echo "05/28/2015" | awk -F '/' '{ print ($1 <= 12 && $2 <= 31 && match($3, /^[0-9][0-9][0-9][0-9]$/)) ? x="good" : x="bad" }'
我试过了:
x=$("05/28/2015" | awk -F '/' '{ print ($1 <= 12 && $2 <= 31 && match($3, /^[0-9][0-9][0-9][0-9]$/)) ? x="good" : x="bad" }')
echo $x
但它不起作用
答案 0 :(得分:1)
您忘记了echo
x=$(echo "05/28/2015" | awk -F '/' '{ print ($1 <= 12 && $2 <= 31 && match($3, /^[0-9][0-9][0-9][0-9]$/)) ? x="good" : x="bad" }')
^^^^
echo "$x"
或强>
使用<<<
将输入提供给awk。
$ x=$(awk -F '/' '{ print ($1 <= 12 && $2 <= 31 && match($3, /^[0-9][0-9][0-9][0-9]$/)) ? x="good" : x="bad" }' <<< "05/28/2015")
$ echo "$x"
good
答案 1 :(得分:1)
$ x=$(echo "05/28/2015" | awk -F'/' '{ print ($1 <= 12 && $2 <= 31 && $3 ~ /^[0-9]{4}$/ ? "good" : "bad") }')
$ echo "$x"
good
但这可能是你真正应该使用的:
$ x=$(awk -v date="05/28/2015" 'BEGIN{ split(date,d,"/"); print (d[1] <= 12 && d[2] <= 31 && d[3] ~ /^[0-9]{4}$/ ? "good" : "bad") }' )
$ echo "$x"
good