【发布时间】:2018-12-18 10:30:40
【问题描述】:
假设我有一个带管道分隔符的字符串:
str="1|2|3|4"
我希望将它们分配给特定的变量。
var_a=1
var_b=2
var_c=3
var_d=4
我是这样做的:
var_a="`echo $str | cut -d'|' -f1`"
var_b="`echo $str | cut -d'|' -f2`"
var_c="`echo $str | cut -d'|' -f3`"
var_d="`echo $str | cut -d'|' -f4`"
这可以有效地完成吗?请提出建议。
【问题讨论】:
-
用数组代替五个不同的变量可以吗?
-
顺便说一句,
echo $str本身就是错误的;echo "$str"稍微好一点(例如,不会用文件名列表替换*);printf '%s\n' "$str"好多更好(适用于所有可能的值,包括-n或-e,echo的某些版本会使用这些值)。请参阅BashPitfalls #14 和the POSIXechospecification 的应用程序部分。