Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Bash列表中获取第一个字符串?_Bash - Fatal编程技术网

如何从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 "$

我有一个Bash列表(空格分隔的字符串),我只想从中提取第一个字符串

例如:

 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