113050050/CS101/mysql_java.pdf
上面是我的字符串,其被存儲在變量「線」擊:劈裂串基於一些分隔符和存儲每個在變量
line="113050050/CS101/mysql_java.pdf"
現在我想基於分裂$line
定界符/
和各單個零件存儲在變量
var1=113050050
var2=CS101
var3=mysql_java.pdf
113050050/CS101/mysql_java.pdf
上面是我的字符串,其被存儲在變量「線」擊:劈裂串基於一些分隔符和存儲每個在變量
line="113050050/CS101/mysql_java.pdf"
現在我想基於分裂$line
定界符/
和各單個零件存儲在變量
var1=113050050
var2=CS101
var3=mysql_java.pdf
$ IFS=/ read var1 var2 var3 <<< "$line"
結果
$ echo $var1
113050050
$ echo $var2
CS101
$ echo $var3
mysql_java.pdf
+1如果您事先不知道'$ line'中有多少組件,您可以使用'IFS =/read -a dirs <<<「$ line」'將結果放入數組中。 – chepner 2013-04-18 12:32:57
這可能會爲你工作:
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"
當'line'包含空格時,這將失敗。你不會分裂'/';你將它們轉換成空間,然後分割*所有*空格,而不僅僅是替換'/'的那些。 – chepner 2013-04-18 12:35:28
數組不會好於單獨的變量嗎? – Barmar 2013-04-18 05:24:15