如何从Bash列表中获取第一个字符串?
我有一个Bash列表(空格分隔的字符串),我只想从中提取第一个字符串 例如:如何从Bash列表中获取第一个字符串?,bash,Bash,我有一个Bash列表(空格分隔的字符串),我只想从中提取第一个字符串 例如: VAR="aaa bbb ccc" -> I need "aaa" VAR="xxx" -> I need "xxx" 除了使用for with break还有其他技巧吗?试试这种格式: echo "${VAR%% *}" 另一种方式是: read FIRST __ <<< "$VAR" echo "$
VAR="aaa bbb ccc" -> I need "aaa"
VAR="xxx" -> I need "xxx"
除了使用for with break还有其他技巧吗?试试这种格式:
echo "${VAR%% *}"
另一种方式是:
read FIRST __ <<< "$VAR"
echo "$FIRST"
read FIRST\up>使用:
目前,Linux和OS X上唯一有效的解决方案是:
IP="1 2 3"
for IP in $IP:
do
break
done
我不确定这有多标准,但它在Bash4.1.11中起作用
NewVAR=($VAR)
echo $NewVAR
如果需要阵列,请使用阵列。;)
你是想用##吗?这不应该是%%吗?这(参数扩展)是最干净的解决方案。当然,除了首先使用一个数组。只是检查了一下Mac OS中是否存在cut,发现存在cut
,但它不一样,事实上是一个非常旧的。我不确定你说的非常旧的是什么意思,它仍然有效吗?我想如果它能工作,像cut这样的程序就不需要每月更新了?太旧了,它没有您使用的参数:pHe要求用一个“空格分隔字符串”替换第一行,用VAR2=“aaa bbb ccc”
和VAR=($VAR2)
可以工作。echo${VAR[0]
可以减少到echo${VAR}
或echo$VAR
。在一般情况下,如果“aaa”改为“*”(an),则它将失败。它可以扩展到当前目录中所有文件和目录的列表…它确实可以工作。而且它更简单(也更快,尤其是与调用诸如或之类的外部进程相比)。但如果第一个“单词”是“*”(an),它将失败-它将扩展到当前目录中所有文件和所有目录的列表…可能的规范问题(3年前,13个答案,135个投票):
NewVAR=($VAR)
echo $NewVAR
VAR=(aaa bbb ccc)
echo ${VAR[0]} # -> aaa
echo ${VAR[1]} # -> bbb