Aleksandar Ivanisevic Asked: 2010-03-26 13:16:12 +0800 CST2010-03-26 13:16:12 +0800 CST 2010-03-26 13:16:12 +0800 CST 在bash中读取时使用跳过变量 772 我正在使用从文件中读取一些变量 while read a b c; do (something) done < filename 有没有一种优雅的方式来跳过一个变量(读入一个空值),即如果我想要 a=1 b= c=3,我应该在文件中写什么? 现在我把 1 "" 3 然后使用 b=$(回声 $b | tr -d \" ) 但这很麻烦,恕我直言 有任何想法吗? scripting bash shell 2 个回答 Voted Best Answer Dennis Williamson 2010-03-26T13:46:10+08:002010-03-26T13:46:10+08:00 有一个空白字段: 1 3 你可以做: if [[ -z c ]] then c=b b= fi 如果您的数据以逗号分隔,您还可以执行以下操作: while IFS=, read a b c (但如果您的字段包含逗号,您将遇到问题,因为您可能在当前版本中包含引号): 1,,3 此外,在您的版本中tr,您可以执行以下操作,而不是 using : b=${b//\"\"} 但是您可以使用以下内容与您当前的数据格式完全消除该步骤: while IFS='"' read a b c 但是,逗号分隔的字段是一种更常见的格式。 user126330 2010-03-26T14:13:28+08:002010-03-26T14:13:28+08:00 我不确定我是否理解您想要的,但您可以使用continue跳过迭代的某些值(无论是 while、for 或其他),甚至使用break停止迭代 while read a b c ;do if [[ $b == 0 || $c == 0 || $a == 0 ]];then continue fi (makelovenotwar) done < /foo/bar
有一个空白字段:
你可以做:
如果您的数据以逗号分隔,您还可以执行以下操作:
(但如果您的字段包含逗号,您将遇到问题,因为您可能在当前版本中包含引号):
此外,在您的版本中
tr
,您可以执行以下操作,而不是 using :但是您可以使用以下内容与您当前的数据格式完全消除该步骤:
但是,逗号分隔的字段是一种更常见的格式。
我不确定我是否理解您想要的,但您可以使用continue跳过迭代的某些值(无论是 while、for 或其他),甚至使用break停止迭代