shell脚本:如何从变量中只读取部分文本
问题描述:
我正在开发一个使用ash shell(而不是bash)的小脚本。shell脚本:如何从变量中只读取部分文本
现在我有具有以下组成的变量:
VARIABLE = "number string status"
其中数可以是任意数目(实际上是1和18之间,但在未来的数字可能更高)的字符串是一个名称和状态是或打开或关闭 名称通常只是小写字母。
现在我的问题是只读取变量中的字符串内容,删除数字和状态。
我该如何获得?
答
两种方式;一个是利用$IFS
和使用while循环 - 这会为单行工作很愉快 - 如:
echo "Part1 Part2 Part3" | while read a b c
do
echo $a
done
或者,使用cut
如下:
a=`echo $var | cut -d' ' -f2`
echo $a
答
如何使用cut
?
name=$(echo "$variable" | cut -d " " -f 2)
UPDATE
显然,灰不明白$(...)
。希望你可以这样做:
name=`echo "$variable" | cut -d " " -f 2`
答
如何:
name=$(echo "$variable" | awk '{print $2}')
答
#!/bin/sh
myvar="word1 word2 word3 wordX"
set -- $myvar
echo ${15} # outputs word 15
$(...)不知道灰。他们需要使用反引号。 – 2012-01-13 23:19:08
你确定@ChrisJ?我检查了[wikipedia](http://en.wikipedia.org/wiki/Comparison_of_computer_shells#Inter-process_communication),它确实声明'ash'支持'命令替换'。 – 2012-01-14 02:20:25
克里斯,与$()和$“..” – Ivan 2012-01-14 10:29:13