2013-04-18 22 views

回答

7
$ IFS=/ read var1 var2 var3 <<< "$line" 

結果

$ echo $var1 
113050050 

$ echo $var2 
CS101 

$ echo $var3 
mysql_java.pdf 
+2

+1如果您事先不知道'$ line'中有多少組件,您可以使用'IFS =/read -a dirs <<<「$ line」'將結果放入數組中。 – chepner 2013-04-18 12:32:57

1

這可能會爲你工作:

line="113050050/CS101/mysql_java.pdf" 
var=(${line//\// }) 
var1=${var[0]} 
var2=${var[1]} 
var3=${var[2]} 

爲@chepner指出,如果在$line變量存在的空間,這將失敗,一個或許更防彈解決方案是使用IFS變量:

line="113050050/CS101/mysql_java.pdf" O="$IFS" IFS='/' var=($line) IFS="$O" 
+0

當'line'包含空格時,這將失敗。你不會分裂'/';你將它們轉換成空間,然後分割*所有*空格,而不僅僅是替換'/'的那些。 – chepner 2013-04-18 12:35:28