【发布时间】:2014-09-11 14:22:42
【问题描述】:
我目前正在编写一个 bash 脚本。假设我有以下字符串:
C:\Program Files\Folder1\ C:\Program Files\Folder2\ C:\Program Files\Folder3\
此字符串可以包含未知数量的窗口位置。 现在我需要在每个位置的末尾将字符串拆分成一个数组,因此每个位置在数组中都有自己的键。主要问题是每个路径(程序文件)中的空格。
到目前为止我已经尝试过:
使用 IFS 变量:
oldIFS="$IFS"
IFS="\ "
myArray=( $myString )
IFS="$oldIFS"
这里的问题是,它会削减每个反斜杠上的位置,而不仅仅是反斜杠和空格。所以C: 是我数组的第一个元素。
使用读取命令:
IFS="\ " read -ra myArray "$myString"
和以前一样的问题。
关于如何解决这个问题的任何想法?
编辑:我不是在使用真正的 bash,而是在 windows 上使用 git bash。所以不是每个 bash 命令都可用。
【问题讨论】:
-
不,因为计算机不是通灵的。
-
bash和Windows与Windows样式路径? -
我的错,我编辑了字符串,所以现在应该清楚我想要做什么了。
-
是的。我对此也不满意,但我得到了创建 bash 脚本的命令,该脚本可以部分执行我的要求(用例将是 Windows 上的 git bash)
-
IFS中的所有字符都被视为字段分隔符。这意味着 bash 将在出现任何反斜杠或空格时拆分字符串。我相信您必须采用另一种拆分字符串的方法,即使用 sed 或类似方法对其进行预处理,以便将\转换为可以放入IFS的单个字符。